Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
posol_7
16 / 16 / 13
Регистрация: 19.11.2014
Сообщений: 156
1

С++: числа типа double

07.01.2015, 02:41. Просмотров 1095. Ответов 3
Метки нет (Все метки)

Всем добрый вечер! Товарищи, я - начинающий чайник, прошу вас объяснить мне как работать с типом double. Мне надо написать такую программу: записывать числа пока не будет введен 0, а также на экран вывести сумму, количество и среднее значение всех чисел (нуль в количество не включать).

Проблема состоит в том, что при выводе на экран среднее значение округляется.
Получается:
Сумма: 183
Количество: 4
Среднее значение: 45
Должно получаться:
Сумма: 183
Количество: 4
Среднее значение: 45,75
Вот мой код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// 1.10.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "conio.h"
#include "iostream"
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
 
int sum(0), kol(0), x;
double sr(0);
 
cout << "\t][Среднее значение][" << endl;
cout << "Вводите числа через пробел: " << endl;
cin>>x;
 
while(x!=0)
{
    if(x>0||x<0)
    {
        kol++;
        sum+=x;
        sr=sum/kol;
    }
    cin>>x;
}
 
cout<< "Сума равна: " << sum << endl;
cout<< "Количество равно: " << kol << endl;
cout<< "Среднее значение равно: " << sr << endl;
 
    _getch();
    return 0;
}
Заранее спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2015, 02:41
Ответы с готовыми решениями:

Можно ли из числа типа double получить 2 числа типа int?
Если можно, то напишите пожайлуста название функции или способ.

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!
Вот программулька: #include &lt;iostream&gt; using namespace std; #include...

Сокращение числа типа double
В качестве базового класса реализовать класс Triad (тройка) для хранения...

Аргумент типа double несовместим с параметром типа double
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std;...

Аргумент типа double несовместим с параметром типа double*
Функция function должна возвращать количество элементов массива, значение...

3
cooller
565 / 533 / 280
Регистрация: 25.12.2013
Сообщений: 1,456
07.01.2015, 02:47 2
Лучший ответ Сообщение было отмечено posol_7 как решение

Решение

Цитата Сообщение от posol_7 Посмотреть сообщение
Проблема состоит в том, что при выводе на экран среднее значение округляется.
C++
1
sr = (double)sum / kol;
1
posol_7
16 / 16 / 13
Регистрация: 19.11.2014
Сообщений: 156
07.01.2015, 03:04  [ТС] 3
Цитата Сообщение от cooller Посмотреть сообщение
sr = (double)sum / kol;
Благодарю) Все работает))

Добавлено через 7 минут
Цитата Сообщение от cooller Посмотреть сообщение
Код C++
1
sr = (double)sum / kol;
Можете объяснить почему потребовалось указывать тип double сумме и почему в цикле? почему с int не прокатило?
0
IrineK
Заблокирован
07.01.2015, 03:24 4
Цитата Сообщение от posol_7 Посмотреть сообщение
Можете объяснить почему
sum и kol - переменные типа int. Если они участвуют в операции /, то это - деление нацело.
При выполнении sr=sum/kol; sr присваивается результат деления нацело.

Как этого избежать?
1) Сделать явное приведение типов, как вам посоветовали
или
2) sr=1.0 * sum/kol;
тоже снимет проблемы, т.к. одним из операндов является 1.0 - число типа double
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2015, 03:24

Разбить число типа double на 2 числа
Добрый день! Попалась мне такая задача - есть 2 интовые переменные, есть число...

Чтение из файла числа типа double
Добрый вечер! Уже долго бьюсь над тем, что у меня слишком маленькая точность...

Непонятно выводится значение числа типа double
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() {...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru