Уменя проблема со строчкой for (int k = 0; k < size; k++): visual studio отказывается инициализировать arr[0], причём в следующем цикле всё хорошо. отладчик просто пропускает этот кусок кода. как это решить?
#include
using namespace std;
int main()
{
setlocale(lc_all, "rus");
int number, age, comparison;
cout < < "сколько пришло посетителей сегодня? ";
cin > > number;
const int size = 5;
int arr[size];
for (int i = 0; i < number; i++)
{
cout < < "сколько лет посетителю? ";
cin > > arr[i];
}
for (int k = 0; k < size; k++)
{
age = arr[0];
if (arr[k] < age)
{
age = arr[k];
}
}
cout < < "возраст самого младшего посетителя за сегодня: " < < age < < endl < < endl;
for (int j = 0; j < size; j++)
{
comparison = arr[0];
if (arr[j] > 0)
{
comparison = arr[j];
}
}
cout < < "возраст самого старшего посетителя за сегодня: " < < comparison < < endl < < endl;
return 0;
}
Для динамического изменения в массиве лучше использовать динамическое распределение памяти, нежели статическое.
В данной программе я вижу, что массив статически выделил 5 ячеек, но при том он пытается записать 10 значений (если я введу в number "10").
Поэтому лучше будет переписать программу так:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int numbers, age, comparison;
cout << "Сколько пришло посетителей сегодня? ";
cin >> numbers;
int* arr=new int [numbers];
for (int i = 0; i < numbers; i++)
{
cout << "Сколько лет посетителю? ";
cin >> arr[i];
}
age = arr[0];
for (int k = 0; k < numbers; k++)
{
if (arr[k] < age)
{
age = arr[k];
}
}
cout << "Возраст самого младшего посетителя за сегодня: " << age << endl << endl;
for (int j = 0; j < numbers; j++)
{
comparison = arr[0];
if (arr[j] > 0)
{
comparison = arr[j];
}
}
cout << "Возраст самого старшего посетителя за сегодня: " << comparison << endl << endl;
return 0;
}
Вариант с одним циклом и ключами:
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int numbers, age, comparison;
bool key1 = false, key2 = false;
cout << "Сколько пришло посетителей сегодня? ";
cin >> numbers;
int* arr=new int [numbers];
for (int i = 0; i < numbers; i++)
{
cout << "Сколько лет посетителю? ";
cin >> arr[i];
if (!key1) {
key1 = true;
age = arr[0];
}
if (!key2) {
key2 = true;
comparison = arr[0];
}
if (arr[i] > 0)
{
comparison = arr[i];
}
if (arr[i] < age)
{
age = arr[i];
}
}
cout << "Возраст самого младшего посетителя за сегодня: " << age << endl << endl;
cout << "Возраст самого старшего посетителя за сегодня: " << comparison << endl << endl;
return 0;
}
Вариант с использованием встроенных функций:
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
setlocale(LC_ALL, "Rus");
int numbers;
cout << "Сколько пришло посетителей сегодня? ";
cin >> numbers;
int* arr=new int [numbers];
for (int i = 0; i < numbers; i++)
{
cout << "Сколько лет посетителю? ";
cin >> arr[i];
}
cout << "Возраст самого младшего посетителя за сегодня: " << *min_element(arr, arr + numbers) << endl << endl;
cout << "Возраст самого старшего посетителя за сегодня: " << *max_element(arr, arr + numbers) << endl << endl;
return 0;
}