Здравейте,може ли да ми помогнете със следната задача,че съм зацепил тотално…
Програма, която чете от стандартния вход едно число N и след това - N на брой цели числа. Съхранене числата във вектор. Напишете функция, която приема този вектор като единствен входен параметър по референция (константна) и връща сумата на най-голямото и най-малкото число в него. В main функцията изведете резултата от функцията на стандартния изход. Забележете, че изходът е едно единствено число, последвано от нов ред.
Пример:
Вход: 5 20 10 30 50 40
Изход: 60
Сортирай масива и събери -> vect[1] + vect[vect.length - 1] и го изпечатай.
ако още не си се оправил пиши ми на лично във facebook Yani Yordanov
Вариант 1:
int v[].........; Създаваш масив в който ще пазиш числата
Ако входа е input[] = 5 20 10 30 50 40
Значи създаваш масив с големина първото число - 5
int length = input[0];
int v[length];
След което запълваш масива с останалите елементи с един for цикъл;
Този подход е мега дърварски, но ако си начинаещ е най-добрият за да разбереш от къде минава и какво се случва.
След това така намираш най-голямото и най-малкото число и ги събираш;
min = v[0];
max = v[0];
for(int i = 1 ; i < 10 ; i++)
{
if(min > v[i])
{
min = v[i];
}
else if(max < v[i])
{
max = v[i];
}
}
int result = max + min;
Вриант 2:
Доста по-кратък начин, но ако не си свикнат с въпросните for-ове няма да ти е ясно защо и как работи кода.
Използваш библиотеката “algorithm”
Най-горе добавяш - include <algorithm>
след което е лесно да намериш числата:
int max = std::max_element(v + 1, v.Length - 1);
Намери ми май-голямото число между вторият и последният елемент. Изключваме първият защото не ти трябва. Той е за да покаже само колко числа следват. Т.Е. input[] = 5 20 10 30 50 40
5 - следват 5 числа “20 10 30 50 40” търсим само в тях.
За min е същата рабора
int min = std::min_element(v + 1, v.Length - 1);
и накрая събираш int result = min + max;