Цикл усреднения, для цикла не выполняется

0

Направления: Дизайн и код программы, которая запрашивает у пользователя, сколько чисел, из которых можно определить среднее значение. Затем предложите пользователю ввести целые значения и суммируйте их с общей суммой. Отобразите сумму чисел и вычисленное среднее значение с соответствующим сопроводительным текстом. Среднее значение должно быть показано с 1 десятичной точкой. Повторяйте процесс до тех пор, пока пользователь не войдет в нуль (0) в качестве количества усредненных значений. Вы можете использовать цикл "while" или цикл "do... while" для основного цикла программы.

Используйте одну функцию для чтения и суммирования значений и другой функции для отображения суммы и среднего значения. Используйте цикл "for" для чтения и суммирования значений.

Цикл for, похоже, не выполняется, но я не могу понять, почему.

#include <cstdlib>
#include <iostream>
#include <iomanip>
using namespace std;

int sumNums(int amount, int, int, int);
void displaySum(int sum, int avg);

main()
{
      int amount = 0;
      cout <<"How many numbers do you wish to average? ";
      cin >> amount;
      int avg = 0, sum = 0;

      while (amount != 0)
      {

            for (int lim = 0; lim == amount; lim++)
            {
                int number = 0;
                cout <<"Enter a value"<< endl;
                cin >> number;
                sumNums(amount, number, sum, avg);
                displaySum (sum, avg);

            }


      }
}

int sumNums (int amount, int number, int sum, int avg)
{
    sum = sum + number;
    avg = sum / amount;
    return sum, avg;    
}

void displaySum (int sum, int avg)
{
     cout <<"The sum is "<< sum <<" and the average is "<< avg << endl;     
}
  • 0
    У вас есть логическая ошибка: lim == сумма
Теги:

2 ответа

2
for (int lim = 0; lim == amount; lim++)

Здесь вы устанавливаете lim в 0, и код запускается только в том случае, если сумма не равна 0. В вашем случае вы выполняете только в том случае, если lim равно сумме, которая никогда не произойдет.

Независимо от вашего состояния, он должен оценивать значение true для каждой итерации, которую вы хотите сделать.

Скорее всего, вы захотите выполнить до тех пор, пока lim не станет равным количеству, чтобы это означало, что вы хотите, чтобы он выполнялся для каждой итерации, где lim меньше, чем количество.

for(int lim = 0; i < amount; lim++)
  • 0
    Я исправил эту часть, так что теперь цикл работает. Но сумма и среднее значение возвращаются как 0.
  • 0
    Это потому, что вы передали переменные по значению, а не по ссылке. Вы должны изменить свою вызывающую подпись, чтобы она была int sumNums (int, int, int & sum, int & avg)
0
 for (int lim = 0; lim == amount; lim++) // so wrong...

изменить на

for (int lim = 0; lim < amount; lim++)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню