0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 4
1

Сравнение строк, не используя strcmp

17.04.2012, 12:06. Показов 4312. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Столкнулся с такой вот проблемой:
Задача: Написать процедуру сравнения строк, не используя strcmp.

На данном форуме нашел вот такую тему: пример

Мне показалось, что можно использовать её, но проблемка в введении этих строк с клавиатуры. У меня в коде это вот так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
int main()
{
    char *stringa = new char[128]; 
    char *stringb = new char [128]; 
    setlocale(0, "Russian"); 
    printf("Введите первую строку: ");
    scanf("%s",stringa); 
    printf("Введите вторую строку: ");
    scanf("%s",stringb);
    if( stringa == stringb ) 
    {
        puts( "Одинаковые" );
    }
    else
    {
        puts( "Разные" );
    }
    
    system("pause"); 
    
    return 0;
}
Но мне вечно выдается:"разные". В чем может быть проблема?

З.Ы. Мне кажется, что намудрил как раз там где ввод строк
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2012, 12:06
Ответы с готовыми решениями:

Сравнение двух строк функцией strcmp
Напишите программу, которая использует функцию strcmp для сравнения двух строк, вводимых...

Создайте функцию strcmp – сравнение двух строк, учитывая регистр символов
Всем привет :) Объясните , пожалуйста, почему не работает программа (работает неправильно )....

Сравнение строк (аналог strcmp)
В Lazarus есть аналог функции strcmp ?

Аналог strcmp: лексикографическое сравнение
Подскажите пожалуйста, как мы сами можем написать аналог такой функции?

5
Модератор
Эксперт С++
13492 / 10748 / 6405
Регистрация: 18.12.2011
Сообщений: 28,681
17.04.2012, 12:16 2
if( stringa == stringb )
сравнивает адреса строк, а они всегда разные.
функция сравнения строк
C++
1
2
3
4
5
6
bool cmp(char *a,char* b)
{
    for(int i=0;a[i]!=0 && b[i]!=0;i++)
          if(a[i]!=b[i])return false;
    return true;
}
2
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 4
17.04.2012, 12:20  [ТС] 3
Благодарю за помощь. Сейчас попробую.
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,925
18.04.2012, 08:57 4
Найдите переменные типа указатель и определите допустиы ли операции, выполняемые над ними
3-й пример в первом посте
1
Модератор
Эксперт С++
13492 / 10748 / 6405
Регистрация: 18.12.2011
Сообщений: 28,681
18.04.2012, 19:39 5
C++
1
2
3
4
5
int f3 (char *s, char *t){
for ( ; *s==*t; s++, t++)// Двигаемся по строкам до тех пор, пока они одинаковые
        if (*s == '\0') return 0; // Попался конец строки, возвращаем "разницы в строках нет"
    return *s-*t; // возвращаем первую найденную разницу
}
1
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 4
18.04.2012, 19:46  [ТС] 6
Всем спасибо за помощь. Программа готова.
0
18.04.2012, 19:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2012, 19:46
Помогаю со студенческими работами здесь

Ошибка сравнения строк strcmp()
Проблема состоит в том, что в цикле while не происходит корректное сравнение строк. По задумке,...

Функция strcmp(), неравенство строк, ветка if - else
int main(коллеги) Не могу понять почему проверка условия - if перестает нормально работать как...

Что использовать для сравнения строк: strcmp или ==
что лучше использовать? == - удобнее.зачем тогда strcmp?

Массив строк типа - char: не срабатывает функция - strcmp()
int main(нужна помощь) Всем доброго дня, коллеги. Понимаю, что вопрос не из умных, но ответ найти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru