Мое упражнение выглядит следующим образом: учитывая список из N целых чисел, найдите его среднее (как двойное), максимальное значение, минимальное значение и диапазон. Ваша программа сначала попросит N, количество целых чисел в списке, которое будет вводить пользователь. Затем пользователь вводит N дополнительных номеров.Поиск min max в C++
Вот мой код:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Input n: ";
cin >> n;
int first; //**LINE NUMBER 1**
cout << "No 1 is: ";
cin >> first;
int max = first;
int min = first;
for (int i=1; i<n;i++) //**LINE NUMBER 2**
{
int x;
cout << "No " << i+1 << " is: ";
cin >> x;
first = x; //**LINE NUMBER 3**
if (max < x)
{
max = x;
}
if (min > x)
{
min = x;
}
}
cout << "max is: " << max << endl;
cout << "min is: " << min << endl;
cout << "mean is: " << (double) (max+min)/2 << endl; //**LINE NUMBER 4**
cout << "range is: " << max - min << endl;
return 0;
}
Однако решение немного отличается:
Для линии номер 1, это
int first=0;
вместоint first;
Для линии номер 2, это
for (int i=1; i<n;++i)
вместоfor (int i=1; i<n;i++)
В строке номер 3, это
first += x;
вместоfirst = x;
Для линии с номером 4, это
cout << "mean is: " << (double) first/n<< endl;
вместоcout << "mean is: " << (double) (max+min)/2 << endl;
Я попробовал несколько примеров, но оба кода производят одни и те же результаты. Почему это? Или я где-то ошибаюсь?
это обман? http://coliru.stacked-crooked.com/a/bad0f9b90e22f17a – sehe
Что это значит? Метод здесь не использует 'iterator' и' algorithm'. Эта проблема и ее решение от открытого курса MIT: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-096-introduction-to-c-january-iap-2011/ – SiXUlm
Первые два отличия стилистичны. Что касается вторых двух отличий, ваш код не будет правильно вычислять среднее значение, если вводятся более двух значений. Очевидно, что ваши тестовые примеры были недостаточными. – Peter