** с++ и несложно, пожалуйста Подсчитайте за один проход массива, сколько его элементов...

0 голосов
47 просмотров

На с++ и несложно, пожалуйста
Подсчитайте за один проход массива, сколько его элементов равны максимальному элементу.

Входные данные
На вход программе сначала подается значение n100 — количество элементов в массиве. В следующей строке входных данных расположены сами элементы массива — целые числа, по модулю не превосходящие 30 000.

Выходные данные
Выдайте количество искомых элементов массива.

Примеры
входные данные
8
4 3 5 2 5 1 3 5
выходные данные
3


Информатика (48 баллов) | 47 просмотров
Дано ответов: 2
0 голосов

#include

using namespace std;

int main(){

int n,maks,schetchik;

cin >>n;

if(n

int a[n];

for(int i=0;i

cin >> a[i];

if (a[i]>-30000 && a[i]

if(i==0){maks=a[i]; schetchik =1;};

if (i!=0 && maks == a[i]) {schetchik +=1;};

if (maks

}

}

cout << schetchik; } </p>

}

(60 баллов)
0

Как ты создашь массив int a[n], если n не является константой? Тут или динамически память выделить нужно, или сразу на все 100 эл-тов.

0

Переменная n не изменяется во время работы всего массива, а значит ошибку это не вызывает. Да и я проверял свой код на CodeBlocks, и он нормально работал

0

Нормальный компилятор позволяет создавать на стадии компиляции массивы только константных размеров, т.к. эти компиляторы однопроходные и они не отслеживают, меняется ли переменная. Они лишь смотрят её тип и он должен быть const. Стандартный синтаксис языка не позволяет сделать так, как сделали Вы.

0

А вы пробовали запускать на, как вы сказали, "нормальных" компиляторах этот код? Жду результата

0

(только вернулся в город, поэтому с задержкой...) Да, будет ошибка. В Visual Studio. Код: E0028, описание: expression must have a constant value. Т.е. не допускается создание статических массивов, размерность которым задётся не константной переменной. Связано это, как я уже говорил, с тем, что "серьёзные" компиляторы выполняют один проход и не проверяют, меняется ли переменная далее или нет.

0

Тогда ладно. Виноват, буду внимательнее

0 голосов

#include

int main()

{

int *arr, size, max = -30000, nMax = 0;

std::cin >> size;

arr = new int[size];

for (int i = 0; i < size; i++)

{

std::cin >> arr[i];

if (arr[i] > max)

max = arr[i], nMax = 1;

else if (arr[i] == max)

nMax++;

}

std::cout << nMax;</p>

delete[] arr;

return 0;

}

(1.3k баллов)