2013-07-15 5 views
2

У меня есть упражнение, где я должен вводить несколько чисел, которые заканчиваются нулем, а затем выполняют разные вычисления с ними. До сих пор я создал do..while -loop для хранения чисел. Мне сказали, что это можно обойти без массива, если это неправильно, скажите мне сразу. Функции, которые мне нужно сделать, - это добавить все числа вместе, найти наибольшее число и второе наибольшее число, а также среднее (среднее) значение всех чисел. Я думаю, что есть разные библиотеки, которые я должен использовать, и могут быть и другие варианты. Пожалуйста, помогите мне разобраться в разных библиотеках и как их использовать. Результаты поиска, которые я нашел в Интернете, не дают мне ответов, которые я ищу, потому что я не мог найти схожую проблему с моей. Это мой код до сих пор:Функции C++, которые занимают несколько номеров и выполняют разные задания

#include<iostream> 
#include<string> 

using namespace std; 

int sumCalc (int); 
int midValCalc (int); 
int secHighCalc (int); 
int highestCalc (int); 
void printCalc(); 


int main() { 

    int nums; 
    cout << "Input numbers, quit with 0: "; 

    do { 
     cin >> nums; 
     cout << nums << " "; // This is just to see the result  
    } 
    while (nums != 0); 

    return 0; 
} 

Что с этим дополнением функции?

int sumCalc (int total) { 

total = 0; 
while (nums != 0) { 
    total += nums; 
} 

return nums; 

}

+0

Когда вы говорите «среднее значение», вы имеете в виду медианное или среднее? – Beta

+6

Я надеюсь, что никто не отправляет полное решение, потому что, честно говоря, это не поможет OP вообще в конечном итоге. – PeterK

+1

Извините, это значит. – Sociopaten

ответ

5

Я не думаю, что вам нужны необычные библиотеки для этого.

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

Возможно, вы можете решить эти проблемы.

+0

Когда я пытаюсь представить функцию суммы мысленно, я получаю это: int sumCalc (int num) { int sum = 0, count = 0; count ++; count = sum; возвратная сумма; } – Sociopaten

+1

@ Sociopaten это хорошая идея, чтобы начать с написания примера проблемы на бумаге и записать вас, вы бы решили. Например, если я зачитал вам список чисел: 5, затем 3, затем 6, затем 2, что бы вы отслеживали на бумаге, когда слышали цифры, чтобы вы могли рассчитать среднее значение в конце? – TooTone

1

Если вам нужно, чтобы получить среднее значение и высокие и второй по величине число не нужен массив (вам не нужно хранить номера)

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

Что касается среднего значения, вы также можете сохранить текущую сумму и количество (количество введенных чисел), которое вы можете использовать для вычисления среднего значения, когда вам нужно.

Смежные вопросы