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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение двух стрингов, Сравнить стринги по буквам,цифрам и проб 
:(
    Опции темы
Denzel666
Дата 16.12.2006, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Приветствую мозговой центр сети интернет...Призываю откликнуться на просьбу...Поступила задача на сравнение 2-х строк ...Сравнивание производить по буквам,цифрам и пробелам...(Язык Си)...решение нужно как воздух...Если же программерам в косяк написать пару строк проги, буду рад хотя бы алгоритму решения...По моим соображениям в строках надо удалить все символы не относящиеся к символам указанным в задаче,а затем производить сравнение непосредственно строк с символами относящимися к поставленной задаче...если это не так просьба поправить меня...
PM MAIL   Вверх
codelord
Дата 16.12.2006, 02:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



что то не совсем ясно, тебе надо чтобы строки
Код

abs!@#$%^&*()abs
abs}"?{>{>{":<abs

были равны? 


--------------------
Доступен поиск по исходным кодам в GOOGLE.
http://www.google.com/codesearch
PM MAIL   Вверх
nikitao
Дата 16.12.2006, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

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



Итак, господа программисты - телепаты, что мы имеем :
1. Есть задание.
2. В нем что то связанное со строками надо сравнить
3. Программу надо реализовать на С.
4. В задании указаны какие то символы, которые надо использовать при ее решении.
5. Решение нужно как воздух.
 smile 



Denzel666, сформулируйте нормально задание smile 


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
apook
Дата 16.12.2006, 06:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее всего товарищу надо просто сравнить две строки
Хорошо хоть не сказал что надо удалить все кроме символов

Везде где есть индекс сравнение проще простого

if( str_1[0] == str_2[0] ) тогда символы совпали


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Anikmar
Дата 16.12.2006, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Присоединяюсь к codelord

Непонятно с длинами строк. Если строки разной длины они по-любому разные, или если в них только указанные символы различаются?
PM MAIL ICQ   Вверх
Denzel666
Дата 17.12.2006, 02:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



#include <stdio.h>
#include <ctype.h>

int cmp( const char * c1, const char * c2 ){// функция сравнения
    do{
        for(; !isalnum( *c1 ) && *c1 != ' ' ; c1++ );
        for(; !isalnum( *c2 ) && *c2 != ' ' ; c2++ );
    }while( *c1++ == *c2++ && *c1 && *c2 );
    return !( *c1 + *c2 ); 
} // можно так - return *c1 + *c2   ...   if( !cmp( c1, c2 )) // <<

int main(int argc, char *argv[])
{
    char * c1 = "asdf. g,fds";
    char * c2 = "asd...f.. g{}[[[]f[ds";
    if( cmp( c1, c2 )) // <<
        puts("True");
    else puts("False");
    getchar();
    return 0;
}

здесь как видите сравниваются строки...но это неверное решение...мне необходимо сравнить 

строки...равенство возможно лишь в том случае если длина строк одинакова и одинаково 

расположение элементов(символов) в строке...подскажите что не так...
PM MAIL   Вверх
zkv
Дата 17.12.2006, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


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

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



Denzel666,  признаться ваш код меня несколько испугал, задания я так и не понял, но, возможно, следующая функция поможет вам:
Код

int cmp( const char * c1, const char * c2 )// функция сравнения return 1 <==> равны
{
    int len = strlen( c1 );
    if( len != strlen( c2 ) )//длина должна быть одинакова
        return 0; 

    for( int i = 0; i < len; i++ )//по всем символам
        if( 
            (c1[i] != c2[i]) && //если символы не равны
            ( isalnum(c1[i]) || isalnum(c2[i]) || isspace(c1[i]) || isspace(c2[i]) )//и хоть один из "целевой" группы 
          )
        return 0;//то до свидания

    return 1; 
} 

PM MAIL   Вверх
Rockie
Дата 17.12.2006, 03:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1143
Регистрация: 23.4.2006

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



Denzel666, посмотри, как это делает strcmp() из стандартной библиотеки и будет тебе счастье smile


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Denzel666
Дата 18.12.2006, 01:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не очень понятен алгоритм...с этим проблема всегда была...


PM MAIL   Вверх
Denzel666
Дата 18.12.2006, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



int strcmp(char s[],char t[])
{
18/12/2006)
for (;*s==*t;s++,t++*)
if(*s='\0')
return 0;
return *s-*t;
}

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

Добавлено @ 02:34 
18/12/2006)-вот эта строчка лишняя как вы понимаете
PM MAIL   Вверх
Alexeis
Дата 18.12.2006, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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




M
alexeis1
Модератор: нельзя дублировать темы. Это запрещено правилами форума http://forum.vingrad.ru/index.php?act=SR&f=27


З.Ы. Вторая тема в ЦП http://forum.vingrad.ru/index.php?showtopic=127549


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0561 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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