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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 16:24   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

LeBron, +1


Guzal
Цитата:
Код:
if(s[i]==s1[i])
	    		 match=true;
                                         else match=false;
Это ОШИБОЧНЫЙ Код!
Он вернёт, что строки совпадают,
если в строке совпадают ПОСЛЕДНИЕ символы.
(результат проверки остальных будет потерян!!!)
проверьте моё предположение на сравнении строк "Vovan" и "Tupin"

нужно или:
Код:
  bool match = true;
  for(int i=0; i<s.length(); i++)
   { if(s[i]!=s1[i]) match=false;
    }
или, много лучше
(конечно, если не стоит задача обязательно выполнить за O(N) циклов, тогда стоит прерывать цикл, когда обнаружили несовпадение символов):
Код:
  bool match = true;
  for(int i=0; i<s.length(); i++)
   { if(s[i]!=s1[i]) { match=false; break; }
    }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2011, 16:31   #12
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Цитата:
Сообщение от LeBron Посмотреть сообщение
"a" и "аа" ответ будет "равны".
все равно выходит "что не равны"
но проверку на всякий случай сделаю, спасибо
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 03.04.2011, 16:39   #13
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение


Это ОШИБОЧНЫЙ Код!
Он вернёт, что строки совпадают,
если в строке совпадают ПОСЛЕДНИЕ символы.
(результат проверки остальных будет потерян!!!)
проверьте моё предположение на сравнении строк "Vovan" и "Tupin"
почему? у меня выводит все правильно
даже если только последние символы совпадают, ответ будет что они не равны, в чем проблема..можете дать пример который выведет не правильный ответ?
Vovan и Tupin ответ будет no match
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 03.04.2011, 16:41   #14
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Код:
 bool match = true;
  for(int i=0; i<s.length(); i++)
   { if(s[i]!=s1[i]) { match=false; break; }
    }
так вообще ответы не правильные
I'm a rebel. [I think positively].
Guzal вне форума Ответить с цитированием
Старый 03.04.2011, 17:07   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Vovan и Tupin ответ будет no match
Это Вы проверили? Или предполагаете?

Кстати, выдайте перед циклом длины строк s.length() и s1.length() - может там длины строк просто разные при вводе...

Цитата:
Код:
 bool match = true;
  for(int i=0; i<s.length(); i++)
   { if(s[i]!=s1[i]) { match=false; break; }
    }
так вообще ответы не правильные
Не то, чтобы я с Вами спорил - просто любопытно: а в чём это проявляется? На любых тестах (при любых строчках) выдаётся что строки равны (или что они не равны)? Или в чём неправильность ответов?

p.s. повторюсь - я не знаю C++ и, что особенно противно, мне не на чем проверить код. поэтому приходится верить на слово...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2011, 17:45   #16
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

Цитата:
Это Вы проверили? Или предполагаете?
проверили)

Цитата:
Или в чём неправильность ответов?
если ввести разные строки ответ будет что они одинаковы, и наоборот, мне лень уже переделывать код и проверять снова, но ответы там точно не правильные

Цитата:
поэтому приходится верить на слово...
поверьте, мне не зачем врать хд


_____________________________
Не надо плодить подряд несколько коротких сообщений!
Это нарушение правил...
для того, чтобы через минуту/другую дописать сообщение,
не надо создавать ещё один новый пост.
нажимайте на предыдущем кнопку "Правка"
и дописывайте в своё сообщение, что Вы хотели добавить!

Модератор.
I'm a rebel. [I think positively].

Последний раз редактировалось Serge_Bliznykov; 03.04.2011 в 17:58.
Guzal вне форума Ответить с цитированием
Старый 03.04.2011, 18:04   #17
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Цитата:
Это Вы проверили? Или предполагаете?
проверили)
тогда у меня будет ещё просьба (и к Guzal и к другим форумчанам, знающим C++)
Код:
#include <iostream>
using namespace std;

	int main()
	{
	    string s, s1;
                s = "123";
                 s1 = "333"; 
	    bool match;
                 for(int i=0; i<s.length(); i++)
	    {
                     if(s[i]==s1[i])
                       match=true;
                       else match=false;
	    }
	
	    if (match)
                    cout<<"match";
                 else 
                    cout<<"no match";

	return 0;
	}
вопрос, что выдаст программа.
И если "no match" - то объясните, пожалуйста, почему...
Пожалуста, подробно, что будет происходить с переменной match в цикле for ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2011, 18:13   #18
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

так ответ будет что они равны,
потому что когда проходим по циклу символы 2х строк не будут равны
но я исправила тогда на
Код:
#include <iostream>
using namespace std;

	int main()
	{
	    string s, s1;
	    //cin>>s>>s1;
	     s="123";
	     s1="333";
	     bool match=true;
	     
	     
	    for(int i=0; i<s.length(); i++)
	    {
	    	if(s[i]!=s1[i])
	    		 
	    		  match=false;

	    }
	
	    
	    if(match)
	    	cout<<"match";
	    		else 
	    			cout<<"no match";
	return 0;
	}
так правильно
I'm a rebel. [I think positively].

Последний раз редактировалось Guzal; 03.04.2011 в 18:24.
Guzal вне форума Ответить с цитированием
Старый 03.04.2011, 19:57   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Guzal, некрасиво это как-то..
в пост #9 Вы приходите пример кода.
Когда я говорю, что он ошибочный, Вы в пост #13 заявляете, что это код у Вас работает и всё правильно выводит..

теперь же выясняется, что код Вы изменили так, как я написал в том сообщении, где сообщил об ошибке (пост #11)!


и, кстати, я не очень теперь верю тому, что этот же код с прерыванием цикла (break в случае, если символы не совпали) "выдаёт неправильные результаты"...

Впрочем, я думаю, что обсуждение нами данной темы явно затянулось. у меня лично вопросов не осталось.
(т.е. для меня тема закрыта).

Дальнейших Вам успехов в программировании.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2011, 20:42   #20
Guzal
Форумчанин
 
Аватар для Guzal
 
Регистрация: 11.09.2010
Сообщений: 101
По умолчанию

) я ведь не говорю,что это мой код, я тогда исправила как Вы написали, но без брейка в цикле, но мой код тоже был правильный как мне казалось, для введенных строк, но если их определить в коде, то ответ в выходит не тот..
с брейком я поняла ошибку свою, забыла скобки, все работает правильно.

спасибо
I'm a rebel. [I think positively].

Последний раз редактировалось Guzal; 03.04.2011 в 20:46.
Guzal вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Создать матрицу A[1..N,1..M]. Найти две строки, в которых элементы одинаковы, но могут стоять в различной Bapr Помощь студентам 7 11.12.2009 17:44
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Команды у процов одинаковы mogul82 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 23.11.2008 21:25