Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнивалка строк, Не работает! 
:(
    Опции темы
GRON
  Дата 29.11.2003, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2003

Репутация: нет
Всего: нет



Только сильно не бейте, я еще совсем новичок...
Знаю, что существует функция, сравнивающая две строки. Вот решил в образовательных целях написать свой выриант.
Код
#include <stdio.h>
#include <iostream.h>
#include <string.h>
int main (int nNumberofArgs, char* pzArgs[])
{
for(;;)
{
int a;
char szPassOr[]="BUM";
char szPassword[5];
cout << "Vvedite parol";
cin.getline(szPassword,3);
for(int n=0; szPassOr[n] == szPassword[n]; n++)
{
 if(szPassOr == 0)
 {
  cout << "Verno\n";
  a=1;
  break;

 }
}
if(a==1) continue;
cout << "Neverno\n";
}
return 0;
}

Почему-то не прет...
Плиз, в чем ошибка (а их много...)
Всем заранее спаибо.
PM MAIL   Вверх
GRON
Дата 29.11.2003, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2003

Репутация: нет
Всего: нет



Да, и еще - просьба не пинать за то, что строки через массивы - плохой стиль программирования... Просто мне сейчас хочется именно так - через массивы...
PM MAIL   Вверх
_hunter
Дата 29.11.2003, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



По-моему лучше писать так(если ты используеш <string>):
Код
string szPassOr("BUM");
string szPassword;
cout << "Vvedite parol";
std::cin.getline(&(szPassword[0]),5);
if ( szPassOr != szPassword ) cout << "Neverno\n";



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
_hunter
  Дата 29.11.2003, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



сорри - тема обновилась во время ответа smile.gif
попробуй так:
Код
#include <stdio.h>
#include <iostream.h>
#include <string.h>
int main (int nNumberofArgs, char* pzArgs[]){
for(;;){
 int a=1;
 char szPassOr[]="BUM";
 char szPassword[5];
 cout << "Vvedite parol";
 cin.getline(szPassword,3);
 for(int n=0; i < 3; n++){
   if (szPassOr[n] != szPassword[n]){
     a=0;
     break;
   }
 }
 if(a!=1) cout << "Neverno\n";
   else cout << "Verno\n";
 }
 return 0;
}



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ars
Дата 1.12.2003, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 28.8.2003
Где: Московская обл.

Репутация: 2
Всего: 2



Цитата
for(int n=0; szPassOr[n] == szPassword[n]; n++)
{
if(szPassOr == 0)
{
  cout << "Verno\n";
  a=1;
  break;

}
}

Наверное, ты имел ввиду if(szPassOr[n] == 0)



--------------------
Есть многое на свете, друг Горацио,
С чем очень долго можно прое..!
PM MAIL   Вверх
Unregistered
Дата 1.12.2003, 13:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











во во, я тоже смотрю, проверка на конец строки какаято левая
  Вверх
GRON
Дата 1.12.2003, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2003

Репутация: нет
Всего: нет



Код
#include <stdio.h>
#include <iostream.h>
#include <string.h>
int main (int nNumberofArgs, char* pzArgs[])
{
for(;;)
{
int a=0;
char szPassOr[]="BUM";
char szPassword[4];
cout << "Vvedite parol ";
cin.getline(szPassword,4);
for(int n=0; szPassOr[n] == szPassword[n]; n++)
 {
  if(szPassword[n] == '\0')
  {
   cout << "Verno\n";
   a=1;
   break;

  }
 }
if(a==1)
 {
 continue;
 }
cout << "Neverno\n";
}
return 0;
}

Во, теперь проперло. Ошибок было две - первую вы уже указали, а вторая - то, что у меня cin.getline(szPassword,3); стояло, поэтому он мне последний символ введенного BUM заменял на ноль-символ, а теперь для ноля есть отдельное место.
Но теперь другая проблема: я пишу - BUM, он выводит следующее:
Код
Verno
Vvedite parol Neverno
Vvedite parol

то есть фактически еще раз прокатывает меня по циклу проверки, не предлагая при этом новый ввод. ХЕЛП!!
PM MAIL   Вверх
Mellorn
Дата 3.12.2003, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.12.2003

Репутация: 1
Всего: 1



Народ, обясните мне -идиоту тупому... я уже давольно долго кодю на СИ но такого - for(;;) еще не видел что это такое? И не правильней ли будит использовать while
char key=1;
while(key==1)
{
.. // пароль введен верно
key=0;
}
PM MAIL   Вверх
GRON
Дата 3.12.2003, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2003

Репутация: нет
Всего: нет



Мне всегда казалось, что for(;;) - бесконечный цикл (то есть он не проверяет никаких условий).
Здесь я сделал его для того, чтобы после окончания проверки пароля программа не закрывалась, а начинала работать заново.
PM MAIL   Вверх
Mellorn
Дата 3.12.2003, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.12.2003

Репутация: 1
Всего: 1



Есть теория, что это поганые cin cout... попробуй с printf() scanf();
Мне кажется он после одного нормального цикла пролетает еще один, где строке присваивается '\0'
отсюда приглашение "Введите пароль" , а потом сразу говорит то, что "\0" не рано "БАМ" -"НЕВЕРНО"


PM MAIL   Вверх
[ss]3L33T@
Дата 5.12.2003, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: -1
Всего: 1



2 Mellorn:
for(;;) - это бесконечноый цикл. Если ты его используешь, то надо чтобы где-то в коде(внутри цикла) стоял break, иначе - цикл никогда не закончится. Ещё: цикл загружает процессор на 100%.
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
MaloY
Дата 5.12.2003, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 27.11.2003
Где: Питер

Репутация: нет
Всего: нет



Цитата(GRON @ 29.11.2003, 18:03)
Да, и еще - просьба не пинать за то, что строки через массивы - плохой стиль программирования... Просто мне сейчас хочется именно так - через массивы...

ЭЭЭ, народ, а как лучше задавать строки... Соответствуясь с хорошим стилем программирования. И будет ли енто относиться к словам?
PM MAIL   Вверх
Mellorn
Дата 5.12.2003, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.12.2003

Репутация: 1
Всего: 1



смотри на первое сообщение huntera в этой теме... он там показал , при помощи <string.h>
,а со словами (если ты имеешь ввиду WORD) ни какой связи =)
to[ss]3L33T@ спасибо тебе, не предсталяю тока нафиг это надо =)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.