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

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

Восстановить пароль Регистрация
 
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
23.04.2014, 15:55     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #1
Напечатать те слова, которые встречаются в каждом из двух заданных предложений.

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

Добавлено через 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;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 15:55     Напечатать те слова, которые встречаются в каждом из двух заданных предложений
Посмотрите здесь:

C++ Напечатать множество слов,которые встречаются в каждом из двух заданных предложений.
Напечатать все слова последовательности, которые встречаются в ней по одному разу. C++
Напечатать те слова, которые встречаются в каждом из двух заданных предложений C++
Напечатать все слова , которые встречаются в исходной строке ровно один раз C++
Напечатать все слова последовательности, которые встречаются по одному разу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
_Ellen_
15 / 15 / 5
Регистрация: 28.11.2013
Сообщений: 50
23.04.2014, 16:16     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #2
Цитата Сообщение от DjSwatPro Посмотреть сообщение
Сделал, но как избавиться от странных повторов строки. Где ошибка...
Нужно убрать одну скобку в 24 строке и в 56
DjSwatPro
0 / 0 / 0
Регистрация: 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 минуту
мдааааааааааа
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
30.04.2014, 05:12  [ТС]     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #4
помогите сравнить две строки и вывести ток одинаковые слова.

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

Добавлено через 12 часов 54 минуты
ааааааааааааа
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
01.05.2014, 09:35  [ТС]     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #5
ппппппппппппппппппппппппп
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;
}

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

Не по теме:

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

Rifle
 Аватар для Rifle
25 / 25 / 5
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
01.05.2014, 13:31     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сделал, как смог. Идея проста: с помощью циклов пробегаемся по первой строке и извлекаем оттуда слово, а потом сравниваем его со всеми словами из второй строки. Может быть не образец кодинга, но вроде все, что нужно, делает.

Кликните здесь для просмотра всего текста
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;
    }
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
01.05.2014, 16:43  [ТС]     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #10
Спасибо. Мне именно так и нужно было. А то некоторые кодят сразу профессионально, а мы такое не изучали. и разобратсья хочется. спасибо еще раз
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
04.05.2014, 20:12  [ТС]     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #11
Эм. Кажется прокол. слово "секнод" выводится, хотя в 1 строке нету
Rifle
 Аватар для Rifle
25 / 25 / 5
Регистрация: 15.11.2012
Сообщений: 93
Завершенные тесты: 4
05.05.2014, 05:08     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #12
У меня не выводится.
Мой вывод:
Кликните здесь для просмотра всего текста
this
is
a
string

Дайте код, который компилируете, посмотрим.
DjSwatPro
0 / 0 / 0
Регистрация: 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;
    }
Rifle
 Аватар для Rifle
25 / 25 / 5
Регистрация: 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++;
Попробуйте, отпишите.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 07:00     Напечатать те слова, которые встречаются в каждом из двух заданных предложений
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
DjSwatPro
0 / 0 / 0
Регистрация: 10.11.2012
Сообщений: 78
06.05.2014, 07:00  [ТС]     Напечатать те слова, которые встречаются в каждом из двух заданных предложений #15
спасибо. работает!
Yandex
Объявления
06.05.2014, 07:00     Напечатать те слова, которые встречаются в каждом из двух заданных предложений
Ответ Создать тему
Опции темы

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