Japanese Relaxation Ответов: 2

Как подсчитать общее количество чисел, больших или равных 50 (массив)


count = arry[0];
           for (i = 0; i < 18; i++)
           {
               if (count==50);
               {
                   count;
               }
           }
       
        cout << "Total Count of the numbers greater than or equal to 50 : " <<count ;


Что я уже пробовал:

int sum = 0.0;
    double average=0.0;
    int i, max, min, count{ 0 };
    int arry[18] = { 16,24,55,25,41,63,90,62,42,28,99,86,13,83,33,91,58,16 };
    for (i = 0; i < 18; i++)
        sum += arry[i];
    for(i = 0; i < 18; i++)
    average = sum / 18;
    cout << "Sum of the numbers : " << sum << endl;
    cout << "Average of the  numbers : " << average << endl;
    max = arry[0];
    for (i = 0; i < 18; i++)
    {
        if (max <= arry[i])
        {
            max = arry[i];
        }
    }
    cout << "Maximum value of the numbers : " << max << endl;
    
    min = arry[0];
    for (i = 0; i < 18; i++)
    {
        if (min >= arry[i])
        {
            min = arry[i];
        }
    }
       cout << "Minimum value of the numbers : " << min << endl;
          count = arry[0];
           for (i = 0; i < 18; i++)
           {
               if (count==0);
               {
                   count;
               }
           }
       
        cout << "Total Count of the numbers greater than or equal to 50 : " <<count ;
        return 0;

Richard MacCutchan

Вы забыли сосчитать цифры > 50. И если вы подумаете об этом, вы можете выполнить все четыре операции (sum, count, min и max) в одном цикле.

Japanese Relaxation

не могли бы вы показать мне плз?

Richard MacCutchan

Смотреть ниже

Andreas Gieriet

Вы помечены как C++. Итак, вы можете поискать что-то вроде этого: http://www.cplusplus.com/reference/algorithm/count_if/

Rick York

Число 18 появляется в вашем коде шесть раз. Что произойдет, если вам скажут использовать 20 чисел? Вот почему вы должны избегать использования литеральных значений в своем коде как можно больше. Поскольку это c++, вы можете объявить значение const для этого размера и использовать его везде.

2 Ответов

Рейтинг:
2

CPallini

Попробуйте также (просто чтобы иметь представление о современном C++, Ричард осуществления, с помощью только одного обхода, является более эффективным)

#include <iostream>
#include <algorithm>
#include <array>
#include <numeric>
using namespace std;


int main()
{
  array<int,18> a{ 16,24,55,25,41,63,90,62,42,28,99,86,13,83,33,91,58,16 };

  const auto beg = a.begin();
  const auto end = a.end();


  auto min = *min_element(beg, end);
  auto max = *max_element(beg, end);
  auto ge50 = count_if(beg, end, [](int x) { return x>= 50;});
  auto sum = accumulate(beg, end, 0);

  cout << "min " << min << ", max " << max << ", ge50 " << ge50 << ", sum " << sum << endl;
}


Рейтинг:
18

Richard MacCutchan

int arry[18] = { 16,24,55,25,41,63,90,62,42,28,99,86,13,83,33,91,58,16 };
int i, min, max, sum, count;
min = arry[0];
max = arry[0];
sum = 0;
count = 0;
for (i = 0; i < 18; i++)
{
    if (min > arry[i])
    {
        min = arry[i];
    }
    if (max < arry[i])
    {
        max = arry[i];
    }
    if (arry[i] >= 50)
    {
        count++;
    }
    sum += arry[i];
}
int avg = sum /18;
// print the results here.


KarstenK

Я бы определил 19 как size_array, чтобы избежать будущих изменений.

Andreas Gieriet

Если вы хотите сделать его надежным, вы также должны рассмотреть пустые массивы. Т. е. что делать на мин/макс/AVG на пустые массивы? Не говорить же о переполнении при вычислении среднего значения для больших массивов/больших чисел?

Richard MacCutchan

Я специально не хотел делать его надежным, поскольку это добавляет уровни сложности, которые отвлекают от фактического ответа.

Richard MacCutchan

Это не должен быть надежный код, просто пример подсчета.

Japanese Relaxation

большое вам спасибо, профессор #Ричард Маккатчан, всем вам.
за помощь мне .

Richard MacCutchan

Добро пожаловать.

CPallini

5.

Richard MacCutchan

Спасибо, мои навыки K&R C все еще востребованы. :)