С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/64: Рейтинг темы: голосов - 64, средняя оценка - 4.56
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
1

Вывести на экран сумму и среднее арифметическое последовательности положительных чисел, введенных с клавиатуры

07.10.2015, 06:21. Показов 12319. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Помогите пожалуйста с написанием программы.
"Найти и вывести на экран сумму и среднее арифметическое последовательности положительных чисел, введенных с клавиатуры. Если вводится ноль, то ввод чисел прекращается.
У меня в программе если ввести ноль то программа заканчивает работать но при этом 1 цикл все же происходит. Вот как сделать чтобы при вводе нуля программа сразу закрылась без проведения цикла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c, d;
    b = 0;
    c = 0;
    do {
        b = c;
        cout << "Введите положительное число = ";
        cin >> a;
        if (a != 0) {
            c = a + b;
            d = (a + b) / 2;
        }
        else {
            cout << "Введен 0\n";
        }
        cout << "Сумма = " << c << "\nСреднее значение = " << d << "\n";
    } while (a != 0);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
07.10.2015, 06:21
Ответы с готовыми решениями:

Считать сумму и среднее арифметическое введенных с клавиатуры положительных чисел
int main(int argc, char *argv) { float x,sr, sum = 0; float i=0; ...

Найти и вывести на экран сумму и среднее арифметическое последовательности чисел
программа позволяющая найти и вывести на экран сумму и среднее арифметическое последовательности...

Найти среднее арифметическое положительных чисел, введенных с клавиатуры (цикл for)
подскажите решение, с использованием цикла for : найти среднее арифметическое положительных чисел,...

Найти среднее арифметическое положительных чисел, введенных с клавиатуры. Всего ввести N различных чисел
Что тут не так? оно не решает правильно, помогите) Private Sub CommandButton5_Click()...

13
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
07.10.2015, 07:42 2
Violex,
Цитата Сообщение от Violex Посмотреть сообщение
Вот как сделать чтобы при вводе нуля программа сразу закрылась без проведения цикла
Может использовать цикл с предусловием?
0
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
07.10.2015, 07:52  [ТС] 3
Цитата Сообщение от EfesXZC Посмотреть сообщение
Может использовать цикл с предусловием?
Как можно сделать предусловие?
По идее как то так, но он не работает и в принципе понятно почему.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c, d;
    b = 0;
    c = 0;
    while (a != 0) {
        b = c;
        cout << "Введите положительное число = ";
        cin >> a;
        if (a != 0) {
            c = a + b;
            d = (a + b) / 2;
        }
        else {
            cout << "Введен 0\n";
        }
        cout << "Сумма = " << c << "\nСреднее значение = " << d << "\n";
    } 
}
0
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
07.10.2015, 08:00 4
Violex, Как вариант, можно до начала тела цикла присвоить a любое значение не равное нулю. Например a=1.
0
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
07.10.2015, 08:08  [ТС] 5
Цитата Сообщение от EfesXZC Посмотреть сообщение
Violex, Как вариант, можно до начала тела цикла присвоить a любое значение не равное нулю. Например a=1.
Все равно цикл проходит 1 раз после ввода нуля.
0
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
07.10.2015, 08:27 6
C++
1
2
3
4
5
6
7
8
int tmp=0, a=1, i=0;
while (a!=0){
       cin >> a;
       tmp += a;
       i ++;
}
cout << "Сумма чисел: "<< tmp << endl;
cout << "Среднее арифметическое:" << tmp/i << endl;
Violex, попробуйте так. Должно работать
0
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
07.10.2015, 09:11  [ТС] 7
Цитата Сообщение от EfesXZC Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int tmp=0, a=1, i=0;
while (a!=0){
 cin >> a;
 tmp += a;
 i ++;
}
cout << "Сумма чисел: "<< tmp << endl;
cout << "Среднее арифметическое:" << tmp/i << endl;
Violex, попробуйте так. Должно работать
не совсем понял куда вставить код (((
нашел ошибку у себя я среднеарифметическое считал не правильно. Но к циклу это не относится с циклом все так же проблема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c, d,i;
    a = 1;
    c = 0;
    i = 0;
    while (a != 0) {
        cout << "Введите положительное число = ";
        cin >> a;
        if (a != 0) {
            i++;
        c= c + a;
        b= c / i;;
        }
        else {
            cout << "Введен 0\n";
        }
        cout << "Сумма = " << c << "\nСреднее значение = " << b << "\n";
    } 
}
0
13 / 13 / 6
Регистрация: 29.09.2015
Сообщений: 38
07.10.2015, 09:30 8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c, d,i;
    a = 1;
    c = 0;
    i = 0;
    cout << "Введите положительное число = ";
    cin >> a;
    while (a != 0) {
            i++;
        c= c + a;
        b= c / i;;
        cout << "Сумма = " << c << "\nСреднее значение = " << b << "\n";
        cout << "Введите положительное число = ";
        cin >> a;
    } 
}
0
2 / 2 / 2
Регистрация: 07.08.2015
Сообщений: 72
07.10.2015, 09:40 9
Цитата Сообщение от Violex Посмотреть сообщение
не совсем понял куда вставить код (((
Violex, Вставлять вместо вашего цикла. Но вы правы, после ввода нуля, цикл повторится еще один раз. Но это не проблема, если, при вычислении среднего значения, заменить
C++
1
cout << "Среднее арифметическое:" << tmp/i << endl;
на
C++
1
cout << "Среднее арифметическое:" << tmp/(i-1) << endl;
0
28 / 28 / 5
Регистрация: 27.01.2014
Сообщений: 784
07.10.2015, 10:32 10
Тоже такая проблема была, можно break"нуться, но я не уверен, что это лучший вариант.
0
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
07.10.2015, 14:07  [ТС] 11
Я сделал через while. в eslse надо добавить return 0; позже скину готовый вариант
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
07.10.2015, 14:21 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
int x=0;
    int sum=0;
    double sr;
    int i=0;
 
    while (cin>>x && x){
        sum+=x;
        sr=static_cast<double>(sum)/ ++i; //Приведение sum к double
    }
 
    cout<<sum<<"\n";
    cout<<sr;
0
22 / 22 / 16
Регистрация: 04.06.2015
Сообщений: 126
07.10.2015, 14:41 13
добавить в else return (или break):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
void main()
{
    setlocale(LC_ALL, "Russian");
    double a, b, c, d,i;
    a = 1;
    c = 0;
    i = 0;
    while (a != 0) {
        cout << "Введите положительное число = ";
        cin >> a;
        if (a != 0) {
            i++;
        c= c + a;
        b= c / i;;
        }
        else {
            cout << "Введен 0\n";
            return;
        }
        cout << "Сумма = " << c << "\nСреднее значение = " << b << "\n";
    } 
}
0
1 / 1 / 3
Регистрация: 02.03.2015
Сообщений: 58
07.10.2015, 17:57  [ТС] 14
Цитата Сообщение от Пытливый Ум Посмотреть сообщение
добавить в else return (или break):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
void main()
{
 setlocale(LC_ALL, "Russian");
 double a, b, c, d,i;
 a = 1;
 c = 0;
 i = 0;
 while (a != 0) {
 cout << "Введите положительное число = ";
 cin >> a;
 if (a != 0) {
 i++;
 c= c + a;
 b= c / i;;
 }
 else {
 cout << "Введен 0\n";
 return;
 }
 cout << "Сумма = " << c << "\nСреднее значение = " << b << "\n";
 } 
}
Ну да именно так я и имел ввиду. Дошло за 15 минут до сдачи работы что необходимо только return добавить. ну и переменную d убрать, лишняя.
0
07.10.2015, 17:57
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
07.10.2015, 17:57
Помогаю со студенческими работами здесь

Найти сумму и среднее арифметическое введённых положительных чисел
Осуществить ввод целых чисел (ввод осуществляется до тех пор,пока не будет введён 0) и подсчитать...

Найти сумму, произведение и среднее арифметическое трёх целых чисел, введённых с клавиатуры
Всем привет. На курсе попалось такое простецкое задание Напишите программу, которая находит...

Вычислить сумму и среднее арифметическое последовательности положительных чисел
Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных...

Вычислить сумму и среднее арифметическое последовательности положительных чисел
Написать программу, которая вычисляет сумму и среднее арифметическое последовательности...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru