Консультация № 196850
28.10.2019, 11:26
0.00 руб.
0 12 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
Помогите разобраться, что в ней не так.
Вот задание: Даны натуральное число n , действительные числа a1...a3n . Вычислить сумму чисел из an+1...,a3n, которые превосходят по величине все числа a1..., an. Без помощи массива.


Приложение:
#include <iostream>
using namespace std;

int main() {
int n;    
double a, max, sum=0.0;        
cout << "n=";
cin >> n;        
cout << "Enter " << 3*n << " elements:\n";    
cin >> a;    
max=a;          
for (int i=2; i <= 3*n; i++)         {        
cin >> a;        
if (i<=n && a>max) max=a;        
if (i>n && a>max) sum+=a;             }       cout << "sum=" << sum << "\n";     system("pause");
return 0;
}

Обсуждение

давно
Советник
400484
472
28.10.2019, 12:11
общий
Добрый день,
посмотрите консультацию.
давно
Студент
403303
19
28.10.2019, 12:28
общий
29.10.2019, 14:54
это ответ
Здравствуйте, tanya.hryanina!

Ваш текст компилируется и запускается без проблем. Уточните вопрос.
Возможные улучшения, если минимально менять текст:
1. Проверять введенное число n (можно ввести 0 или отрицательное число, тогда алгоритм не имеет смысла).
2. Первый элемент можно вводить сразу в переменную max.

Код:
#include <iostream>
using namespace std;

int main()
{
int n;
double a, max, sum=0.0;

cout << "Enter natural n:";
cin >> n;
if(n<1)
{
cout << "Entered number is less than 1";
return 1;
}
cout << "Enter " << 3*n << " elements:\n";
cin >> max;
for (int i=2; i <= 3*n; i++)
{
cin >> a;
if (i<=n && a>max) max=a;
if (i>n && a>max) sum+=a;
}
cout << "sum=" << sum << "\n";
system("pause");
return 0;
}
давно
Посетитель
7438
7205
28.10.2019, 14:40
общий
Адресаты:
Для уточняющих вопросов у нас есть мини-форум
Ответ следует давать, когда ответ полностью готов...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
28.10.2019, 14:41
общий
Адресаты:
Можете дать ответ
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
в сети
Управляющий
143894
2148
28.10.2019, 16:31
общий
Адресаты:
А чем вас не устроил ответ, данный Лысковым 25 дней назад?
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


в сети
Управляющий
143894
2148
28.10.2019, 16:32
общий
Адресаты:
Не понятно, почему у вас, как автора первоначального ответа, не возник такой вопрос к автору?
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Посетитель
7438
7205
28.10.2019, 16:40
общий
Адресаты:
Да потому, что я не сижу постоянно на Портале. Увидел позже ...
За меня это сделал . Зачем повторяться?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
в сети
Управляющий
143894
2148
28.10.2019, 16:53
общий
28.10.2019, 16:56
Адресаты:
Цитата: Лысков Игорь Витальевич
Какие проблемы?

Да никаких проблем. Зачем так агрессивно?

Просто, пришел повторный вопрос, на который ты уже дал ответ. Дама выложила другой текст программы, не твой - мне кажется логичным и разумным вопрос, а что не устроило в первом ответе?

На счет ломки - по-моему у тебя - раз простой вопрос вызывает ответную агрессию и истерию.
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Посетитель
402845
5
28.10.2019, 19:39
общий
Адресаты:
не устроил предыдущий ответ, то что нужно написать программу без помощи массива, а там он присутствует
давно
Посетитель
7438
7205
28.10.2019, 19:53
общий
28.10.2019, 20:06
Адресаты:
Здравствуйте, Таня! А Вы точно уверены, что в предложенном ответе есть массив? Приведу программу здесь:
Код:
#include <iostream>
using namespace std;
int main()
{
int n, n3;
double a, max;
double sum = 0;
cout << "Enter n: ";
cin >> n;
n3 = n*3;
cout << "Enter numbers a[1],...,a[" << n << "]" << endl;
cin >> max;
for(int i=1; i<n; i++)
{
cin >> a;
if (a > max)
max = a;
}
cout << "Enter numbers a[" << n+1 << "],...,a[" << 3*n << "]" << endl;
for(int i=n; i<n3; i++)
{
cin >> a;
if (a > max)
sum += a;
}
cout << "sum = " << sum << endl;
return 0;
}
Посмотрите внимательно...
Да и в Вами предложенной программе также нет массива. Где Вы его увидели?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
402845
5
29.10.2019, 05:51
общий
Цитата: Лысков Игорь Витальевич
Я ошиблась, прошу извинения, в этой программе нет массива, но она все равно не считает как надо, мне нужно найти сумму чисел, а он считает лишь число n, а сумму всегда пишет , что она равна нулю. Может я не правильно что то понимаю?
давно
Посетитель
7438
7205
29.10.2019, 13:14
общий
29.10.2019, 13:15
Адресаты:
А Вы обратили внимание, что программа считает сумму чисел, которые больше всех первых n?

Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа