Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
#1

Напечатать те слова, которые встречаются в каждом из двух заданных предложений

23.04.2014, 15:55. Просмотров 1358. Ответов 15
Метки нет (Все метки)

Напечатать те слова, которые встречаются в каждом из двух заданных предложений.

Помогите. Зарание спасибо!
Погуглил, много тем,но никто не ответил!

Добавлено через 10 минут
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
#include <iostream>
#include <ctime>
#include <iomanip>
#include <vector>
using namespace std;
typedef vector< vector<int> > T;
ostream &operator<<(ostream &output,const T &mass)
{
     for(size_t i = 0;i<mass.size();++i){
        for(size_t j = 0;j<mass.size();++j)
               output<<setw(5)<<mass[j];
      output<<"\n\n";
    }
     return output;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    srand((unsigned)time(0));
    unsigned int row,col;
    do{
      cout<<"Enter rows > 0"<<endl;
      cin>>row;
    }while(row <= 0);
    do{
      cout<<"Enter col > 0"<<endl;
      cin>>col;
    }while(col <= 0);
    T mass(row, vector<int>(col));
    for(size_t i = 0;i < row;++i){
      for(size_t j = 0;j < col;++j)
                  mass[j] = rand()%10;
    }
    cout<<mass;
    
    return 0;
}
Как это переделатьна простой язык, т.к. мы такого не проходили,даи я хочу понять.

Добавлено через 1 час 32 минуты
Есть мысли?

Добавлено через 18 минут
Есть еще это вариант овтета, но...\\\
Нужно на простом смерном языке. Зарание спасибо

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using namespace std;
 
int main()
{
     string s1,s2;
     getline( getline( cin,s1),s2);
     stringstream ss(s1);
     set< string>set1(( istream_iterator< string>(ss)), istream_iterator< string>());
     ss.clear();
     ss.str(s2);
     set<string>set2(( istream_iterator< string>(ss)), istream_iterator< string>());
     set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(), ostream_iterator<string>( cout, "\n"));
     getch();
     return 0;
}
Добавлено через 3 минуты
Сделал, но как избавиться от странных повторов строки. Где ошибка...

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
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;
 
int main()
{   
    char *tempSlova1 = new char[20];
    char *tempSlova2 = new char[20]; 
    char *myString1 = new char[100];
    char *myString2 = new char[100];
    
    cout << "1 stroka: ";
    
    
    fflush(stdin);
    gets(myString1);
    cout << "2 stroka: ";
    gets(myString2);
 
    cout << "slova 1stroki:" << endl;
 
    for(int i = 0, k =0 ; i <= strlen(myString1); i++, k ++)
    {{   
        if(myString1[i] == ' '|| myString1[i] == '\0')
        {   
            tempSlova1[k] = '\0';
            puts(tempSlova1);
            
            k = -1;
            
        }
        else
            tempSlova1[k] = myString1[i];
             
        
    }
    
    cout << "2stroki:" << endl; 
    for(int i = 0, k =0 ; i <= strlen(myString2); i++, k ++)
 
    {   
        if(myString2[i] == ' '|| myString2[i] == '\0')
        {   
            tempSlova2[k] = '\0';
            puts(tempSlova2);
            
            k = -1;
           
        }
        else
            tempSlova2[k] = myString2[i];
       
    }
    
}
    
    getch();
    
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 15:55
Ответы с готовыми решениями:

Напечатать те слова, которые встречаются в каждом из двух заданных предложений
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale&gt; using namespace...

Напечатать множество слов,которые встречаются в каждом из двух заданных предложений.
Здравствуйте! Существует такая задачка:Напечатать множество слов,которые...

Найти множество всех слов, которые встречаются в каждом из двух заданных предложений
Примерно в таком виде: #include &lt;conio.h&gt; #include &lt;iostream&gt; #include...

Напечатать слова из двух заданных предложений, которые есть только в одном из них (в том числе повторяющиеся)
Даны два предложения. Напечатать слова, которые есть только в одном! Из них (из...

Напишите программу для нахождения всех слов, которые встречаются в каждом из двух предложений.
Напишите программу для нахождения множества всех слов, которые встречаются в...

15
_Ellen_
15 / 15 / 6
Регистрация: 28.11.2013
Сообщений: 50
23.04.2014, 16:16 #2
Цитата Сообщение от DjSwatPro Посмотреть сообщение
Сделал, но как избавиться от странных повторов строки. Где ошибка...
Нужно убрать одну скобку в 24 строке и в 56
0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
25.04.2014, 19:17  [ТС] #3
Спасибо. Но надо как то терь замутить, чтоб те слова, которые он разделил, сравнить и оставить одинаковые. блин, быдло-код.

Добавлено через 1 час 11 минут
Если добавить условие и в циклах добавить новые перменные, то как бы работает, но выдает не те символы.

Добавлено через 3 часа 56 минут
мммм

Добавлено через 8 часов 12 минут
Нужна помощь

Добавлено через 7 часов 55 минут
хелп

Добавлено через 4 часа 43 минуты
хелп

Добавлено через 18 часов 27 минут
хелп

Добавлено через 3 часа 23 минуты
хелп

Добавлено через 1 час 11 минут
че такая сложная задача?

Добавлено через 1 час 51 минуту
мдааааааааааа
0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
30.04.2014, 05:12  [ТС] #4
помогите сравнить две строки и вывести ток одинаковые слова.

Добавлено через 22 часа 49 минут
хелп

Добавлено через 12 часов 54 минуты
ааааааааааааа
0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
01.05.2014, 09:35  [ТС] #5
ппппппппппппппппппппппппп
0
Belfegor
01.05.2014, 10:05
  #6

Не по теме:

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
#include <iostream>
#include <string>
#include <set>
#include <sstream>
#include <vector>
using namespace std;
int main(){
    string str1, str2;
    set<string> words;
    vector <string> vec;
    getline(cin, str1);
    cin.sync();
    getline(cin, str2);
    cin.sync();
    stringstream ss(str1);
 
    while(ss >> str1){
        words.insert(str1);
    }
    stringstream ss2(str2);
    while(ss2 >> str2){
        vec.push_back(str2);
    }
    for (string &s: vec) {
        if(words.count(s))cout << s <<endl;
    }
    return 0;
}

0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
01.05.2014, 10:34  [ТС] #7
как бы понимаю, что робит и норм, но надо на простой смертный язык. т.к. такое мы еще не проходили
0
Belfegor
01.05.2014, 11:21
  #8

Не по теме:

Цитата Сообщение от DjSwatPro Посмотреть сообщение
на простой смертный
ну тогда и пишите на паскакале

0
Rifle
27 / 27 / 13
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
01.05.2014, 13:31 #9
Лучший ответ Сообщение было отмечено DjSwatPro как решение

Решение

Сделал, как смог. Идея проста: с помощью циклов пробегаемся по первой строке и извлекаем оттуда слово, а потом сравниваем его со всеми словами из второй строки. Может быть не образец кодинга, но вроде все, что нужно, делает.

Кликните здесь для просмотра всего текста
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
#include <iostream>
using std::cout;
using std::endl;
#include <cctype>
 
 
int main(int argc, char * argv[])
    {
    const char * str1 = "this is a first C-style string";
    const char * str2 = "this is a second string";
    char buffer1[50];
    char buffer2[50];
    int count = 0;
    while (*str1)
        {
        int i = 0;
        buffer1[i] = '\0';
        while (isalpha(*str1))
            {
            buffer1[i] = *str1;
            str1++;
            i++;
            }
        buffer1[i] = '\0';
        i = 0;
        const char * temp = str2;
        while (*str2)
            {
            buffer2[i] = '\0';
            while (isalpha(*str2))
                {
                buffer2[i] = *str2;
                str2++;
                i++;
                }
            buffer2[i] = '\0';
            if (strcmp(buffer1, buffer2) == 0)
                cout << buffer1 << endl;
            str2++;
            i = 0;
            }
        str1++;
        str2 = temp;
        }
    return 0;
    }
1
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
01.05.2014, 16:43  [ТС] #10
Спасибо. Мне именно так и нужно было. А то некоторые кодят сразу профессионально, а мы такое не изучали. и разобратсья хочется. спасибо еще раз
0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
04.05.2014, 20:12  [ТС] #11
Эм. Кажется прокол. слово "секнод" выводится, хотя в 1 строке нету
0
Rifle
27 / 27 / 13
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
05.05.2014, 05:08 #12
У меня не выводится.
Мой вывод:
Кликните здесь для просмотра всего текста
this
is
a
string

Дайте код, который компилируете, посмотрим.
0
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
05.05.2014, 08:31  [ТС] #13
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.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
using std::cout;
using std::endl;
#include <cctype>
 
 
int main(int argc, char * argv[])
    {
    const char * str1 = "this is a first";
    const char * str2 = "this is a second";
    char buffer1[50];
    char buffer2[50];
    int count = 0;
    while (*str1)
        {
        int i = 0;
        buffer1[i] = '\0';
        while (isalpha(*str1))
            {
            buffer1[i] = *str1;
            str1++;
            i++;
            }
        buffer1[i] = '\0';
        i = 0;
        const char * temp = str2;
        while (*str2)
            {
            buffer2[i] = '\0';
            while (isalpha(*str2))
                {
                buffer2[i] = *str2;
                str2++;
                i++;
                }
            buffer2[i] = '\0';
            if (strcmp(buffer1, buffer2) == 0)
                cout << buffer1 << endl;
            str2++;
            i = 0;
            }
        str1++;
        str2 = temp;
        }
getch();
return 0;
    }
0
Rifle
27 / 27 / 13
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
05.05.2014, 09:30 #14
У меня по-прежнему выводит все нормально, но есть предположение в чем дело:
в конце главного цикла вместо этого:
C++
1
2
str1++;
str2 = temp;
сделайте вот так:
C++
1
2
3
str2 = temp;
if (*str1)
    str1++;
Попробуйте, отпишите.
1
DjSwatPro
0 / 0 / 1
Регистрация: 10.11.2012
Сообщений: 78
06.05.2014, 07:00  [ТС] #15
спасибо. работает!
0
SimplyKolyan
0 / 0 / 0
Регистрация: 25.02.2018
Сообщений: 1
06.05.2018, 11:41 #16
Вот мой вариант, не могу понять почему сравнивает 1 слово 1 предложения со всеми словами, но ко 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
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <locale>
#include <math.h>
#include <string.h>
using namespace std;
main()
{
    setlocale (LC_ALL, "RUSSIAN");
    
    // Объявление переменных
    
    char a[200], b[200], c[200], *pa, *pb, sign[8]=" .,?!;:";
    int x=0, i=0, j, len;
        
    // Ввод данных
    
    cout << "Введите первое предложение: " << '\n';
    gets(a);
    cout << "Введите второе предложение: " << '\n';
    gets(b);
        
    // Решение и вывод результатов
    
    pa=strtok(a, sign);
    while (pa!=NULL)
    {
        pb=strtok(b, sign);
        while (pb!=NULL)
        {
            cout << "Сравниваются:" << '\n';
            puts(pa);
            puts(pb);                       
            if (!strcmp(pb,pa))
            {
                x=1;
                len=strlen(pa);
                for (j=0; j<len; j++)
                {
                    c[i]=pa[j];
                    i++;    
                }
                c[i]=' ';
                i++;
            }   
            pb = strtok(NULL, sign);
        }
        pa = strtok(NULL, sign);        
    }
    
    // Вывод результатов
    
    if (x==1)
    {
        cout << "Слова встречающиеся в обоих предложениях:" << '\n';
        puts(c);
    }
    else cout << "В первом предложении нет слов встречающихся во втором предложении!!!" << '\n';
    return 0;
}
0
06.05.2018, 11:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2018, 11:41

Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++)
Задание если понадобится: Даны два предложения. Напечатать слова, которые...

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

Напечатать все слова последовательности, которые встречаются по одному разу
2)Дана последовательность слов. Напечатать все слова последовательности,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru