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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2008, 02:00   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Помогите найти ошибку ( с++ )

Прога запрашивает имя пользователя, и в случае если ввели правильное
имя пользователя то тогда пароль.
Ошибка такая:
illegal else without matching if
У меня была подобная ошибка и в других прогах. Когда я задал вопрос
на форуме мне сказали что у меня неверная расстановка скобок, и сказали посмотреть, какой синтаксис у конструкции if-else.
В данном случае я не знаю что делать. Синтаксис смотрел.

if (условие_истинно)
оператор;
else
оператор;

Помогите пожалуйста найти ошибку.

Код:
#include <iostream.h> //Proga, zapros username i password
void main()
{
	char name,Henry;
	int parol;
	cout<<"\t\tEto Proverka Imeni Polzovatela i Parola"<<endl;
	cout<<"User Name: ";
	cin>>name;
	if (name==Henry)
		cout<<"Vvedite Parol: ";
	cin>>parol;
	else 
		cout<<"Vi vveli nepravilnoe imya polzovatela!"<<endl;
	do 
	{
		cout<<"Poprobuyte snova: ";
		cin>>name;
	}
	while (name==Henry);
}
JOFRIF вне форума Ответить с цитированием
Старый 17.05.2008, 11:07   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Дело в том, что когда ты пишешь в теле структуры if ОДИН оператор, то тогда скобки можна не ставить, а если операторов больше (как у тебя), то нужно ставить скобки.
Вот так будет работать
Код:
if (name==Henry)
{
		cout<<"Vvedite Parol: ";
	        cin>>parol;
}
else 
		cout<<"Vi vveli nepravilnoe imya polzovatela!"<<endl;
Тоже самое и с циклом for.
MaTBeu вне форума Ответить с цитированием
Старый 17.05.2008, 13:17   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Большое спасибо. Я забыл про это.
JOFRIF вне форума Ответить с цитированием
Старый 17.05.2008, 13:51   #4
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Мне нужно чтоб прога запрашивала имя пользователя (Henry) и пароль (123).В случае если имя пользователя не верно выводить: попробуте снова, а если верно то вводить пароль. С паролем тоже самое до тех пор пока не будет правильным. Компилятор ругается. Говорит что я не инициализировал переменную Henry. Зачем мне ее инициализировать если пользователь должен ввести имя, а прога должна проверить правильное ли имя и пароль.
Помогите пожалуйста.

Код:
#include <iostream.h> //Proga, zapros username i password
void main()
{
	char name;
	char Henry;
	int parol;
	cout<<"\t\tEto Proverka Imeni Polzovatela i Parola"<<endl;
	cout<<"User Name: ";
	cin>>name;
	if (name==Henry)
	{
		cout<<"Vvedite Parol: ";
	cin>>parol;
	}
	else if (parol==123)
		cout<<"Access denied";
	else 
		cout<<"Vi vveli nepravilnoe imya polzovatela!"<<endl;
	do 
	{
		cout<<"\nPoprobuyte snova: ";
		cin>>name;
	}
	while (name==Henry);
}
JOFRIF вне форума Ответить с цитированием
Старый 17.05.2008, 16:23   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Тебе просто нужно определить переменную Henry
Код:
char Henry="Henry";
И еще... Вот здесь
Код:
else if (parol==123)
		cout<<"Access denied";
можно убрать проверку на пароль. Имя-то всеравно неверное.
MaTBeu вне форума Ответить с цитированием
Старый 17.05.2008, 16:39   #6
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Кстати, вот мой вариант этой проги. Он чуток переделан.
Код:
//---------------------------------------------------------------------------

#include <iostream>
#include <string>
#include <conio>

//---------------------------------------------------------------------------

using namespace std;

int main()
{
        char *login;
        char *pswd;
        char correctUN[]="Henry";
        char correctPW[]="123";
        int key=0;

        login=new char[10];
        pswd=new char [10];
        do
        {
                clrscr();
                cout<<"Enter a username:\n";
                cin.getline(login, 10);
                cout<<"Enter the password:\n";
                cin.getline(pswd, 10);

                if(strcmp(login, correctUN)==0)
                {
                        if(strcmp(pswd, correctPW)==0)
                        {
                                cout<<"Access granted!\n";
                                key=1;
                        }
                        else
                        {
                                cout<<"Incorrect password\n";
                                cout<<"Please, try again...\n";
                        }
                }
                else
                {
                        cout<<"Incorrect username\n";
                        cout<<"Please, try again...\n";
                }
        }
        while(key!=1);
        getch();
        return 0;
}
//---------------------------------------------------------------------------
Будешь вводить, пока правильно не введешь
MaTBeu вне форума Ответить с цитированием
Старый 17.05.2008, 17:34   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Сделал как вы сказали. И вот...

c:\projects\pass\pass.cpp(5) : error C2440: 'initializing' : cannot convert from 'char [6]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
Error executing cl.exe.

pass.exe - 1 error(s), 0 warning(s)

А что касается вашей версии, то вот.
Compiling...
Pass Matbeu version.cpp
c:\projects\pass matbeu\pass matbeu version.cpp(6) : fatal error C1083: Cannot open include file: 'conio': No such file or directory
Error executing cl.exe.

PASS MATBEU.exe - 1 error(s), 0 warning(s)


Код:
#include <iostream.h> //Proga, zapros username i password
void main()
{
	char name;
	char Henry="Henry";
	int parol=123;
	cout<<"\t\tEto Proverka Imeni Polzovatela i Parola"<<endl;
	cout<<"User Name: ";
	cin>>name;
	if (name==Henry)
	{
		cout<<"Vvedite Parol: ";
	cin>>parol;
	}
	else if (parol==123)
		cout<<"Access denied";
	else 
		cout<<"Vi vveli nepravilnoe imya polzovatela!"<<endl;
	do 
	{
		cout<<"\nPoprobuyte snova: ";
		cin>>name;
	}
	while (name==Henry);
}
JOFRIF вне форума Ответить с цитированием
Старый 17.05.2008, 21:40   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Так сразу бы и сказали, что не от Борланда средой пользуетесь.
Итак, убираем #include <conio> и getch();
На место getch(); ставим cin.get();
Вуаля и все работает!
MaTBeu вне форума Ответить с цитированием
Старый 19.05.2008, 00:49   #9
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Вуаля не работает .
Опять ошибка
Compiling...
Pass Matbeu version.cpp
c:\projects\pass matbeu\pass matbeu version.cpp(23) : error C2065: 'clrscr' : undeclared identifier
Error executing cl.exe.

PASS MATBEU.exe - 1 error(s), 0 warning(s)
Изменил все как вы сказали.
Переделайте пожалуйста так чтоб не было ошибок...а то уже надоело .
JOFRIF вне форума Ответить с цитированием
Старый 19.05.2008, 18:13   #10
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Вот блин.... clrscr() тоже убирайте и ставьте system("cls").
Чувак, будь проще, я написал тебе программу, которая работает в определенной среде. А то, что ты не указал среду, это твои проблемы. Так же как и то, что ты не знаешь про стандартные функции getch() и clrscr(). Моя программа рабочая на 100%. Просто ты молодец на все готовенькое. Не нравится - никто не заставляет. Исправляй сам, если надоело.

Последний раз редактировалось MaTBeu; 19.05.2008 в 18:17.
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку Максим_Леонидович БД в Delphi 4 20.08.2008 23:23
Помогите найти ошибку KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 1 11.04.2008 15:48
Помогите найти ошибку NeiL Общие вопросы Delphi 7 04.03.2008 07:14
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15