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

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

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

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

Ответы 7

  • Переменная n не изменяется во время работы всего массива, а значит ошибку это не вызывает. Да и я проверял свой код на CodeBlocks, и он нормально работал
  • Нормальный компилятор позволяет создавать на стадии компиляции массивы только константных размеров, т.к. эти компиляторы однопроходные и они не отслеживают, меняется ли переменная. Они лишь смотрят её тип и он должен быть const. Стандартный синтаксис языка не позволяет сделать так, как сделали Вы.
  • А вы пробовали запускать на, как вы сказали, "нормальных" компиляторах этот код? Жду результата
    • Автор:

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

      javanojku
    • 6 лет назад
    • 0
  • #include <iostream>

    using namespace std;

    int main(){

    int n,maks,schetchik;

    cin >>n;

    if(n<=100){

    int a[n];

    for(int i=0;i<n;i++){

    cin >> a[i];

    if (a[i]>-30000 && a[i]<30000){

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

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

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

    }

    }

    cout << schetchik; }

    }

  • #include <iostream>

    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;

    delete[] arr;

    return 0;

    }

    • Автор:

      boy
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years