Форум программистов, компьютерный форум CyberForum.ru

Сравнение строк - C++

Восстановить пароль Регистрация
 
viper[ua]
 Аватар для viper[ua]
1 / 1 / 0
Регистрация: 15.12.2010
Сообщений: 48
14.03.2013, 22:08     Сравнение строк #1
Написать собственную функцию, без использования функций стандартной библиотеки, которая сравнивает две строки, игнорируя количество пробелов между словами
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 22:08     Сравнение строк
Посмотрите здесь:

Сравнение строк C++
C++ Сравнение строк
C++ Сравнение 2 строк
C++ Сравнение строк
Сравнение строк C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11821 / 6800 / 769
Регистрация: 27.09.2012
Сообщений: 16,876
Записей в блоге: 2
Завершенные тесты: 1
14.03.2013, 22:49     Сравнение строк #2
Первое, что пришло на ум
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
 
bool mystrcmp(char* str1,char * str2){
    while(*str1==' ') str1++;
    while(*str2==' ') str2++;
    while(*str1 && *str2){
        if(*(str1++)!=*(str2++))
            return false;
        while(*str1==' ') str1++;
        while(*str2==' ') str2++;
    }
    return *str1==*str2;
}
 
int main()
{
    char s1[] = "My s  t rin g  ", 
         s2[] = "  My stri n g  ";
    std::cout << std::boolalpha << mystrcmp(s1,s2) << std::endl;
    return 0;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
15.03.2013, 02:20     Сравнение строк #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
bool mystrcmp(const char *s1, const char *s2)
{
    while (*s1 && *s2)
    {
        if (*s1 == ' ')      s1++;
        else if (*s2 == ' ') s2++;
        else if (*s1++ != *s2++) return false;
    }
    return true;
}
 
int main()
{
    std::cout << std::boolalpha
        << "(Eniki, Eniki)      => " << mystrcmp("Eniki", "Eniki") << std::endl
        << "(Eniki, Eniki )     => " << mystrcmp("Eniki", "Eniki ") << std::endl
        << "( E niki , E n iki) => " << mystrcmp("  E niki  ", "E n iki") << std::endl
        << "(sEniki, Eniki)     => " << mystrcmp("sEniki", "Eniki") << std::endl
        << "(Eniki, Eniki s)    => " << mystrcmp("Eniki", "Eniki s") << std::endl;
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,411
22.03.2013, 20:12     Сравнение строк #4
Добавляю комменты по просьбе ТС-а
C++
1
2
3
4
5
6
7
8
9
10
bool mystrcmp(const char *s1, const char *s2)
{
    while (*s1 && *s2) // пока указатели s1 и s2 не указывают на NULL
    {
        if (*s1 == ' ')      s1++; // если указатель s1 указывает на пробел, инкримируем его
        else if (*s2 == ' ') s2++; // иначе, аналогичное сравнение со вторым
        else if (*s1++ != *s2++) return false; // иначе если s1 указывает не на тот же символ, что и s2 возвращаем ложь. При проверке инкримируем указатели
    }
    return true; // достигли конца, все ок, возвращаем истину
}
Yandex
Объявления
22.03.2013, 20:12     Сравнение строк
Ответ Создать тему
Опции темы

Текущее время: 19:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru