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

Найти общие для двух данных строк слова - C++

Восстановить пароль Регистрация
 
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
16.12.2012, 01:12     Найти общие для двух данных строк слова #1
Написал программу вот по этому заданию: С клавиатуры вводятся две строки, содержащие некоторые слова, перечисленные через точку с запятой. Найти общие для этих строк слова и вывести их на экран.
Пример ввода:
строка 1: world;cat;dog;ball
строка 2: world;dog;processor;memory;programming
Результат: world dog
но у меня проблема несовместимости типов,не знаю как её исправить,вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string.h"
using namespace std;
int tsz(char* s)
{
    int a[50];
    int j=0;
    a[j]=0;
    for (int i=0;i<strlen(s);i++)
    {
        if (s[i]==';')
        {
            a[j+1]=i;
        j++;
        }
    }
    return *a;
    
}
char sl(char*s,int* a,int i)
{
char str[10];
 
        for(int j=a[i-1];j<a[i];j++)
        {
            str[j]=s[j];
        }
        return str[10];
}
void main()
{
    char str1[100];
    char str2[100]; 
    char s[100];
    cout<<"vvedite 1 stroku:";
    gets(str1);
    cout<<"vvedite 2 stroku:";
    gets(str2);
    for (int i=0;i<strlen(str1);i++)
        for (int j=0;j<strlen(str2);j++)
        {
            if (strcmp(sl(str1,tsz(str1),i),sl(str2,tsz(str2),j))==0)
                strcat(s,str1);
 
        }
        cout<<s;
        getch();
}
проблема вот тут
C++
1
if (strcmp(sl(str1,tsz(str1),i),sl(str2,tsz(str2),j))==0)
скажите пожалуйста как можно исправить
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 01:12     Найти общие для двух данных строк слова
Посмотрите здесь:

C++ Составить функцию, определяющую тождественность двух данных строк
C++ найти общие делители для всех элементов
C++ Вывести два предложения и распечатать самые длинные слова, общие для этих предложений
Cоставить функцию, выводящую на экран слова, которые од-новременно содержатся в каждой из двух заданных строк C++
Для двух заданных натуральных чисел получить в порядке убывания все общие кратные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
16.12.2012, 02:11     Найти общие для двух данных строк слова #2
Указанная Вами проблема устранена. Отладка - за Вами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "iostream"
#include "conio.h"
#include "string.h"
using namespace std;
int tsz(char* s)
{
    int a[50];
    int j=0;
    a[j]=0;
    for (int i=0;i<strlen(s);i++)
    {
        if (s[i]==';')
        {
            a[j+1]=i;
        j++;
        }
    }
    return *a;    
}
 
char* sl(char*s,int a,int *i)
{
char str[10];
 
        for(int j=a[i-1]; j<a[i]; j++)
        {
            str[j]=s[j];
        }
        return str/*[10]*/;
}
void main()
{
    char str1[100];
    char str2[100]; 
    char s[100];
    cout<<"vvedite 1 stroku:";
    gets(str1);
    cout<<"vvedite 2 stroku:";
    gets(str2);
    for (int i=0; i<strlen(str1); i++)
        for (int j=0;j<strlen(str2);j++)
        {
            
            if (strcmp(sl(str1, tsz(str1), &i), sl(str2, tsz(str2), &j))==0)
                strcat(s,str1);
 
        }
        cout<<s;
        getch();
}
Да, и ещё - обязательно "полистайте" Стива Макконнелла "Совершенный код".
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
16.12.2012, 02:21  [ТС]     Найти общие для двух данных строк слова #3
а как понимать
C++
1
return str/*[10]*/;
?
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
16.12.2012, 02:32     Найти общие для двух данных строк слова #4
Имя массива - это указатель на его нулевой элемент.
C++
1
return str;
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
16.12.2012, 04:27  [ТС]     Найти общие для двух данных строк слова #5
а что значит при отладке ошибка - "Нарушение прав доступа при чтении"?

Добавлено через 57 минут
В продолжении темы,можете указать где сейчас неправильно написано,про отладке выдаёт набор символов и содержимое второй строки,хотя я её даже не прибавляю к той строке которую вывожу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string.h"
using namespace std;
int* tsz(char s[])
{
    int* a=new int[50];
    int j=0;
    a[0]=0;
    for (int i=0;i<strlen(s);i++)
    {
        if (s[i]==';' || '\0')
        {
            a[j+1]=i;
        j++;
        }
    }
    return a;    
    delete [] a;
}
 
char* sl(char s[],int a[],int *i)
{
char str[15];
 
        for(int j=a[*i-1]; j<a[*i]; j++)
        {
            str[j]=s[j];
        }
        return  str;
}
void main()
{
    char str1[100];
    char str2[100]; 
    char s[100];
    cout<<"vvedite 1 stroku:";
    gets(str1);
    cout<<"vvedite 2 stroku:";
    gets(str2);
    for (int i=1; i<strlen(str1); i++)
        for (int j=1;j<strlen(str2);j++)
        {
        
            if (strcmp(sl(str1,tsz(str1), &i), sl( str2, tsz(str2), &j))==0)
                strcat(s,str1);
            
        }
        cout<<s;
        getch();
}
Yandex
Объявления
16.12.2012, 04:27     Найти общие для двух данных строк слова
Ответ Создать тему
Опции темы

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