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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.07.2009, 14:52   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию Среднее арифметическое

Не компилится прога, не скажите что не так в этом коде. Останавливается на строке : cin>>vvod
Код:
#include <iostream>
using namespace std;

int main()
{
	setlocale(0,"");
	int k = 0, vvod = 0, s = 0;
	const char da = 'n';
	
	for(;;)
	{
        cout<<"Введите пожалуйста значение \n\t";
	    cin>>vvod;
	    cout<<endl;
        ++k;
		s+=vvod;
		cout<<"Ещё раз не хотите ввести? \n"<<
			"Если нет, введите 'n' или 'N'\n\t\";
		cin>>vvod;
		if((vvod == 'n') || (vvod =='N'))
			break;
	}
	cout<<endl
		<<"Из "<<k<<"чисел "<<"получим среднее число = "<<s/k<<".";
        <<endl;
cin.ignore();
cin.get();
}
Golovastik вне форума
Старый 18.07.2009, 15:19   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Код:
cout<<"Ещё раз не хотите ввести? \n"<<
	"Если нет, введите 'n' или 'N'\n\t \ ";
cin>>vvod;
выделенного слеша(\) быть не должно, кавычки инерпретируются не как конец строки, а как часть её, потому и точка с запятой так же игнорируются.
Код:
cout<<endl
		<<"Из "<<k<<"чисел "<<"получим среднее число = "<<s/k<<"." ; 
        <<endl;
выделенной точки с запятой быть не должно, или добавтье cout перед endl

И кстати, программа не будет выполняться корректно.
Когда Вы выдаёте вопрос ввести ли ещё одно значение, то ответ читаете так же в vvod. следует объявить ещё одну переменную типа char и ответ читать в неё, а не в vvod.

Последний раз редактировалось netrino; 18.07.2009 в 15:32.
netrino вне форума
Старый 18.07.2009, 15:31   #3
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Всё, я понял, вот так нужно было.
Код:
#include <iostream>
using namespace std;

int main()
{
	setlocale(0,"");
	int k = 0, vvod = 0, s = 0;
	char da = 'n';
	
	for(;;)
	{
        cout<<"Введите пожалуйста значение \n\n\t-> ";
	    cin>>vvod;
	    cout<<endl;
        ++k;
		s+=vvod;
		cout<<"Ещё раз не хотите ввести? \n "<<
			"Если нет, введите 'n' или 'N'\n\n\t-> ";
		cin>>da;
		if((da == 'n') || (da =='N'))
			break;
	}
	cout<<endl
		<<"Из "<<k<<"чисел "<<"получим среднее число = "<<s/k<<"."
        <<endl;
cin.ignore();
cin.get();
return 0;
}

Последний раз редактировалось Golovastik; 18.07.2009 в 15:38.
Golovastik вне форума
Старый 18.07.2009, 15:38   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Как раз потому что Вы читаете символ в переменную типа int.
Следует объявить ещё одну переменную:
Код:
char ans;
...
cout<<"Ещё раз не хотите ввести? \n"<<
	"Если нет, введите 'n' или 'N'\n\t";
cin>>ans;
if((ans == 'n') || (ans =='N'))
          break;
netrino вне форума
Старый 18.07.2009, 15:43   #5
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Вроде программа работает. но дело в том, что если вводить после числа, не один символ, а несколько, происходит зацикливание, не скажите как его исправить?
Golovastik вне форума
Старый 18.07.2009, 15:44   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Golovastik Посмотреть сообщение
Вроде программа работает. но дело в том, что если вводить после числа, не один символ, а несколько, происходит зацикливание, не скажите как его исправить?
Вводить только один символ))

добавлено:
Ладно, если серьёзно, то как вариант предлагаю использовать ф-цию _getch():
Код:
ans = _getch()
Тогда программа не будет ожидать нажатия Enter и ввести много симоволов не получится

Последний раз редактировалось netrino; 18.07.2009 в 15:48.
netrino вне форума
Старый 18.07.2009, 15:46   #7
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Ну,а как сделать ввод не одного символа, а нескольких?
Golovastik вне форума
Старый 18.07.2009, 15:54   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

То бишь слово? Например использовать строки(string)

Код:
#include <string>
...

int main()
{
  ...
  string ans;
  ...

  cin >> ans;
  if((ans == "n") || (ans =="N"))
          break;
  if(ans == "exit")
          exit(0);
  ...
}
Прощу обратить внимание, что n и N теперь в двойных кавычках, string не умеет сравнивать себя с символами посредством ==
netrino вне форума
Старый 18.07.2009, 16:06   #9
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Попробывал так, но ничего не помогает. При вводе, более 1 символа, происходит зацикливание.

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

int main()
{
	setlocale(0,"");
	int k = 0; double vvod = 0, s = 0;
	string da ;
	
	for(;;)
	{
        cout<<"Введите пожалуйста значение \n\n\t-> ";
	    cin>>vvod;
	    cout<<endl;
        ++k;
		s+=vvod;
		cout<<"Ещё раз не хотите ввести? \n "<<
			"Если нет, введите 'n' или 'N'\n\n\t-> ";
		cin>>da;
		if((da == "n") || (da =="N"))
			break;
	}
	cout<<endl
		<<"Из "<<k<<" чисел "<<"получим среднее число = "<<s/k<<"."
        <<endl;
cin.ignore();
cin.get();
return 0;
}
Golovastik вне форума
Старый 18.07.2009, 16:13   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Оно будет, только если ввести несколько слов разделённых пробелом.
Зачем нужно вводить несколько символов?)
netrino вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
среднее арифметическое Mashul'ka Помощь студентам 1 14.05.2009 19:33
Найти среднее арифметическое массива. gree Помощь студентам 6 13.05.2009 21:52
Среднее арифметическое 10 чисел. Assembler stscolt Помощь студентам 3 13.04.2009 17:04
Матрицы. Найти среднее арифметическое Waia Помощь студентам 1 06.11.2008 17:22