Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2010, 13:14   #1
Negent
Студент
Пользователь
 
Аватар для Negent
 
Регистрация: 11.06.2010
Сообщений: 39
Радость С++. Подсчёт среднего арифметического

Доброго дня и ночи, товарищи-программисты! Имеется задача, которая, как казалось бы на правильность (компилятор не выявил ошибки), не выполняется правильно. Помогите, пожалуйста.
Задача (авт. Стивен Прата).
Напишите программу, которая считывает значения перечислений. Программа должна прерывать ввод при вводе символа '@'. Необходимо, чтобы программа после ввода каждого значения выводила среднее арифметическое и при вводе не числового значения выводила бы сообщение "не цифра". По завершении ввода чисел (ввод символа '@'), программа будет выводить общее число перечислений.

Ниже привожу текст программы, которой я составил:
Код:
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <ctype.h>

void main()
{
        char indigit;
        double mean,digit,sum=0.0,i=0;
        while (indigit!='@') //Условие выполнения цикла до ввода "собаки"
        {
        cin>>indigit;
        if (isdigit(indigit)) //Функция проверки вводимого значения на цифровое значение
        {
        digit=indigit; //Перевод вводимого значения из типа char в тип double
        sum=sum+digit;
        i++; //Инкремент количества вводимых значений для вычисления среднего арифметического
        mean=sum/i;
        cout<<" mean:"<<mean;
        }
        else cout<<endl<<"No digit"; //вывод сообщения о том, что вводимые данные не являются числами
        }
        cout<<endl<<"Sum: "<<sum;
        cout<<endl<<"Arithmetic mean: "<<mean;
        cout<<endl<<" ...done!";
        getch ();
}
Непонятно, почему программа выдаёт странные значения среднего арифметического и суммы (как идёт преобразование компилятором?).
Ошибки ещё есть, но они незначительны.
P. S. Среда C++ Builder 6.
"...Попытайся ухватить звёзды с небес, чем переживай, что до них не дотянуться..."

Последний раз редактировалось Stilet; 16.08.2010 в 08:36.
Negent вне форума Ответить с цитированием
Старый 15.08.2010, 14:00   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ошибка в
Код:
digit=indigit; //Перевод вводимого значения из типа char в тип double
Я так понимаю каждый раз вводится всё-таки 1 символ. По сути возвращается код символа. Так как код нуля = 48, то можно просто вычесть это значение, и digit можно объявить как int.
Код:
digit=indigit-48;

Последний раз редактировалось eoln; 15.08.2010 в 14:06.
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычисление среднего арифметического по датам mori Microsoft Office Excel 6 17.12.2009 08:21
Нахождение среднего арифметического с помощью Паскаля Regina Помощь студентам 3 15.11.2009 11:32
Поиск среднего арифметического в массиве Джед Общие вопросы C/C++ 15 12.06.2009 16:32
Нахождение среднего арифметического AliVe Паскаль, Turbo Pascal, PascalABC.NET 1 12.04.2007 00:25