2013-11-23 6 views
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

У вас есть логическая ошибка: Нт == сумма – jstevenco

ответ

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

Здесь устанавливается Ит 0, а код выполняется, только если сумма не равна 0. В Ваших вам выполнить только тогда, когда Нт равна сумма, которая никогда не происходит.

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

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

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

Я исправил эту часть, так что теперь запускает цикл. Но сумма и avg продолжают возвращаться как 0. – matttm

+0

Это потому, что вы передали переменные по значению, а не по ссылке. Вы должны изменить свою сигнатуру вызова как int sumNums (int amount, int number, int & sum, int & avg) – ApplePie

0
for (int lim = 0; lim == amount; lim++) // so wrong... 

изменение

for (int lim = 0; lim < amount; lim++) 
Смежные вопросы