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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
viper[ua]
 Аватар для viper[ua]
1 / 1 / 0
Регистрация: 15.12.2010
Сообщений: 48
#1

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

14.03.2013, 22:08. Просмотров 660. Ответов 3
Метки нет (Все метки)

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

C++ Сравнение строк
Сравнение строк C++
сравнение строк C++
C++ Сравнение строк
C++ Сравнение строк
сравнение строк C++
Сравнение строк C++
Сравнение строк C++
C++ сравнение строк
Сравнение строк C++
Сравнение строк C++
Сравнение 2-х строк S и s C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12495 / 7057 / 791
Регистрация: 27.09.2012
Сообщений: 17,434
Записей в блоге: 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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,122
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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,122
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     Сравнение строк
Ответ Создать тему
Опции темы

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