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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 13:15   #1
dancer1
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 18
Печаль проблема итерации цикла

В общем такая картина: пишу прогу по заданию от академии, прога типа мини игра "Кто хочет стать миллионером"
В вопросе даны 4 попытки на правильный ответ при неправильном ответе счетчик откатывается на 1
и у меня воозникла не понятная ошибка - при первой итерации цикла счетчик ошибок уменьшается на 1 но при второй итерации стоит на месте... Хелп плиз
[spoiler]
Код:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std; 
int errors=4;
char key;
void main() 
{	std::locale rus("rus_rus.866");
	std::wcout.imbue(rus);
	std::wcout << L"\t\t Привет, это передача \"Кто хочет стать миллионером\""<<"\n";
	system("cls");
	std::wcout << L" Немного о правилах: -Вам будут заданы 12 вопросов.\n";
	std::wcout << L"\t\t     -По мере правильности ответов вы будете подниматся\n";
	std::wcout << L"\t\t      или спускатся по денежной \"лесенке\".\n";
	std::wcout << L"\t\t     -После завершения игры вы можете пойит снять деньги\n";
	std::wcout << L"\t\t      в любом ближайшем банкомате (шутка :) ).\n";
	std::wcout << L"\t\t     -У вас есть 2 попытки дать правильный ответ на вопрос.\n";
	std::wcout << L"\t\t     -Вы можете в любой момент прервать игру ";
	std::wcout << L"\t\t\t\t\t      и забрать деньги.\n";
	std::wcout << L"\t\t\t\t\tИтак начнем!!\n";
	system("cls");
	 {
	do {std::wcout << L"Итак 1-ый вопрос, напоминаю у вас есть "<<errors<<L" попытки.\n";//гдето тут
		std::wcout << L"Кто первый полетел на луну?\n";									 //содержится 
		std::wcout << L"A:Гагарин.\n";													//ошибка итерации цикла
		std::wcout << L"B:Путин.\n";
		std::wcout << L"C:Янукович.\n";
		std::wcout << L"D:Ющенко.\n";
		cin>>key;
		switch(key){
		case 'A':
		case 'a':
				std::wcout << L"A:Гагарин.\n";
				break;
		case 'B':
		case 'b':
				std::wcout << L"B:Путин.\n";
				break;
		case 'C':
		case 'c':
				std::wcout << L"C:Янукович.\n";
				break;
		case 'D':
		case 'd':
				std::wcout << L"D:Ющенко.\n";
				break;
		}
		if (key=='A'&&'a')
					{std::wcout << L"Это правильный ответ!!!\n";
					goto m;
		}
		else{
					--errors;
					std::wcout << L"К сожалению это не правильный ответ."<<L"У вас осталось "<<errors<<L" попытки\n";
					
					
		}		
	}while (errors=0); 
	m:do {std::wcout << L"ЭВМ это...\n";
		std::wcout << L"A:Электро Вычислительная Машина.\n";
		std::wcout << L"B:Электрическая Военная Машина.\n";
		std::wcout << L"C:Электро Вакуумная Маскировка.\n";
		std::wcout << L"D:Непонятная инопланетная штука.\n";
		cin>>key;
		switch(key){
		case 'A':
		case 'a':
				std::wcout << L"A:Электро Вычислительная Машина.\n";
				break;
		case 'B':
		case 'b':
				std::wcout << L"B:Электрическая Военная Машина.\n";
				break;
		case 'C':
		case 'c':
				std::wcout << L"C:Электро Вакуумная Маскировка.\n";
				break;
		case 'D':
		case 'd':
				std::wcout << L"D:Непонятная инопланетная штука.\n";
				break;
		}
		if (key=='A'&&'a')
					std::wcout << L"Это правильный ответ!!!\n";
					
		else{
					std::wcout << L"К сожалению это не правильный ответ.\n";
					errors+=1;
					
		}		
	}while (errors=4);
		 
}
	
	std::wcout << L"\n\n\n\n\n\n\n\n";
}
[/spoiler]
dancer1 вне форума Ответить с цитированием
Старый 27.12.2010, 13:23   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Код:
while (errors=0);
В языках C\C++ оператор сравнения - двойной знак равенства "=="
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 27.12.2010, 13:27   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
		if ((key=='A')||(key=='a'))
					{std::wcout << L"Это правильный ответ!!!\n";
					goto m;
		}
Найди ыдцать отличий.
Цитата:
Хелп плиз
Мда... Пушкин на тебя смотрит как на...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2010, 14:43   #4
dancer1
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Blade Посмотреть сообщение
Код:
while (errors=0);
В языках C\C++ оператор сравнения - двойной знак равенства "=="
блин, вот я дурак я ж читал, и нам обьясняли что в С++ == - сравнение, а =-присваивание. (((

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
		if ((key=='A')||(key=='a'))
					{std::wcout << L"Это правильный ответ!!!\n";
					goto m;
		}
Найди ыдцать отличий.

Мда... Пушкин на тебя смотрит как на...
как на несвежую какашку, да спасибо рашен у меня хромает а в приоритете иногда стоит тупой сленг.

и нужно было разбивать операции.... кароче я тупой наверно, хотя может из-за того что у меня всего второе занятие по С++...

всем спасибо за помощь пойду дальше юзать
и да с наступающим нг вас
COUNT('НГ')=1;

Последний раз редактировалось dancer1; 27.12.2010 в 14:47.
dancer1 вне форума Ответить с цитированием
Старый 27.12.2010, 14:45   #5
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

такие ошибки не редкость) компилятор то думает что все ок
UltimaBeaR вне форума Ответить с цитированием
Старый 27.12.2010, 14:54   #6
dancer1
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 18
По умолчанию

блин у меня все еще осталось ошибка но уже другого рода, тоесть:
Код:
do {std::wcout << L"Итак 1-ый вопрос, напоминаю у вас есть "<<errors<<L" попытки.\n";//гдето тут
		std::wcout << L"Кто первый полетел на луну?\n";									 //содержится 
		std::wcout << L"A:Гагарин.\n";													//ошибка итерации цикла
		std::wcout << L"B:Путин.\n";
		std::wcout << L"C:Янукович.\n";
		std::wcout << L"D:Ющенко.\n";
		cin>>key;
		switch(key){
		case 'A':
		case 'a':
				std::wcout << L"A:Гагарин.\n";
				break;
		case 'B':
		case 'b':
				std::wcout << L"B:Путин.\n";
				break;
		case 'C':
		case 'c':
				std::wcout << L"C:Янукович.\n";
				break;
		case 'D':
		case 'd':
				std::wcout << L"D:Ющенко.\n";
				break;
		}
		if ((key=='A')||(key=='a'))
					{std::wcout << L"Это правильный ответ!!!\n";
					//goto m;
		}
		else{
					errors-=1;
					std::wcout << L"К сожалению это не правильный ответ."<<L"У вас осталось "<<errors<<L" попытки\n";
					
					
		}		
	}while (errors==0);
цикл проходит один круг и выходит сразу...
dancer1 вне форума Ответить с цитированием
Старый 27.12.2010, 15:03   #7
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

а сколько попыток?
UltimaBeaR вне форума Ответить с цитированием
Старый 27.12.2010, 15:07   #8
dancer1
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 18
По умолчанию

всего 4 попытки при не правильном ответе одна попытка вычитается и возвращает на начало цикла... Так должно было быть в идеале.
А по факту - одна попытка вычитается при следующем не правильном ответе, тупо выкидывает меня из цикла.
dancer1 вне форума Ответить с цитированием
Старый 27.12.2010, 15:08   #9
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

while (errors==0);

меняй на

while (errors > 0);

ЗЫ: а если ответ правильный то делай break; - так обломишь цикл
UltimaBeaR вне форума Ответить с цитированием
Старый 27.12.2010, 15:15   #10
dancer1
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 18
По умолчанию

эээ так вроде цикл do..while:
ДЕЛАТЬ ДЕЙСТВИЕ ..... ПОКА errors не станет 0
DO WHILE



извиняюсь я просто не догнал все заработало!!!! спасибо!
dancer1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как на каждой итерации цикла создавать новый файл одной командой? atg Общие вопросы C/C++ 2 24.09.2009 15:02
Проблема с составлением цикла artemavd БД в Delphi 12 16.08.2009 14:55
Проблема в программе на С++, множественное исполнение цикла Vikelf Помощь студентам 1 25.05.2009 09:31
Переход от цикла к циклу не выходя из цикла (без multithreading) Qousio Общие вопросы C/C++ 2 16.05.2009 09:27
Программа "простые итерации". Готовый код. Проблема с компилированием. Oleg330 Общие вопросы C/C++ 9 25.12.2008 23:51