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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнить подстроку со строкой 
:(
    Опции темы
Uter123
Дата 15.11.2015, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



После ввода с клавиатуры рядами некоторых 
фамилий и рядом возраст с ними (год рождения). 
Выдать на экран список тех, у кого фамилии 
похожи и их возраст (года).
Например:  Петров и Петрова- имеют похожие фамилии.

Не  могу понять, почему не работает.
Код

#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string.h"
#include "stdio.h"
using namespace std;

int main(int argc, char* argv[])
{
    const int N=3;
    int i=0,y=0,u=0,j=0;
    char x[N][15]={"",""},q[11]=" ",s[11]=" ";
    for(i=0;i<N;i++)
    {
        cin.getline(x[i],15);
    }
    for(y=0;y<N;y++)
    {
        for(u=0;x[y][u]!=' ';u++)
        {
            q[u]=x[y][u];
        }
        for(j=y+1;j<N;j++)
        {
            for(int r=0;x[j][r]!=' ';r++)
            {
                s[r]=x[y][r];
            }
            if(strcmp(q,s)==-1)
            {
                if(strstr(q,s)!=NULL)
                {
                    cout<<q<<endl<<s<<endl;
                }
            }
            else if(strcmp(q,s)==1)
            {
                if(strstr(s,q)!=NULL)
                {
                    cout<<q<<endl<<s<<endl;
                }
            }
            else if(strcmp(q,s)==0)
            {
                if(strstr(q,s)!=NULL)
                {
                    cout<<q<<endl<<s<<endl;
                }
            }
            for(int a=0;a<11;a++)
            {
                q[a]=' ';
                s[a]=' ';
            }
        }
    }
    _getch();  
    return 0;
}

PM MAIL   Вверх
xvr
Дата 16.11.2015, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Uter123 @  15.11.2015,  15:50 Найти цитируемый пост)
Не  могу понять, почему не работает.

Я тоже не могу, и вообще никто не сможет. А программа явный кандидат на конкурс - 'угадай, что оно делает'.

Одно могу сказать сразу - сравнивать результаты strcmp с 1 и -1 не комильфо  smile Никто не гарантирует, что там будут именно единицы. Гарантируют только знак числа.

PM MAIL   Вверх
BloodForever
Дата 16.11.2015, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а функцию strstr можно сравнивать с NULL? ведь она возврашает указатель на первое вхождение подстроки
PM MAIL   Вверх
Envy
Дата 17.11.2015, 09:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я набросал, как можно решить эту задачу - http://ideone.com/3iH9dS. Я в с++ не специалист, если кто-нибудь укажет на ошибки, буду благодарен.

Сразу предупреждаю - там, скорее всего, будет проблема со строками в UTF.

А код, который в топике, да - надо переписать, его больно читать smile 



Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
Romikgy
Дата 17.11.2015, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Цитата(BloodForever @  16.11.2015,  19:30 Найти цитируемый пост)
strstr 

strstr 
Цитата

A pointer to the first occurrence in str1 of the entire sequence of characters specified in str2, or a null pointer if the sequence is not present in str1.



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Так конструируемые строки q и s вообще не завершаются символом '\0'.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1296 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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