0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 5
1

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

11.04.2014, 01:44. Показов 4021. Ответов 2
Метки нет (Все метки)

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

Pascal
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
uses crt;
var a: array [1..100] of string;
    b: array [1..100] of integer;
    i,j,k,l: integer;
    s,sl: string;
begin
write('s=');
readln(s);
j:=1;
sl:='';
if s[length(s)]<>'.' then s:=s+'.';
for i:=1 to length(s) do
    if (s[i]<>' ') and (s[i]<>'.')
       then sl:=sl+s[i] else
            begin
            a[j]:=sl;
            sl:='';
            inc(j);
            end;
k:=j;
for j:=1 to k do
    write(a[j],' ');
for j:=1 to k do
    b[j]:=0;
writeln;
writeln('не повторяются: ');
for j:=1 to k do
    for l:=1 to k do
        if a[j]=a[l] then
           inc(b[j]);
for j:=1 to k do
    if b[j]=1 then write(a[j],' ');
end.
То, что получилось у меня, помогите исправить ошибки

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
#include <windows.h>
#include <iostream.h>
#include <string>
 
int main()
{
SetConsoleOutputCP(1251);
int i,j,k,l;
int b[100];
string a[100];
string s,s1,s2,s3;
getline(cin,s);
j=1;
s1="";
if (s[s.length()]!=".") s=s+".";
for (i=1;i<s.length();i++)
 if (s[i]!=" " && s[i]!=".")
  s1=s1+s[i];
   else {
    a[j]=s1;
    s1="";
    j++;
   }
k=j;
for (j=1;j<k;j++)
 cout<<a[j]<<" ";
for (j=1;j<k;j++)
 b[j]=0;
cout<<"не повторяются: ";
for (j=1;j<k;j++)
for (l=1;l<k;l++)
 if (a[j]==a[l]) b[j]++;
for (j=1;j<k;j++)
 if (b[j]==1)
  cout<<a[j]<<" ";
system("pause");
        return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2014, 01:44
Ответы с готовыми решениями:

Даны два предложения. Напечатать слова, которые встречаются в двух предложениях только один раз. В C#
Здравствуйте, помогите пожалуйста. буду очень вам признателен. нужно написать программу: Даны два...

Напечатать слова, которые встречаются в предложениях только 1 раз
Ребята! Такая задача - Даны 2 предложения.Напечатать слова, которые встречаются в предложениях...

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

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

2
0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 5
18.04.2014, 02:02  [ТС] 2
Все ещё нужна помощь
0
6 / 6 / 5
Регистрация: 10.08.2012
Сообщений: 82
18.04.2014, 02:49 3
создаешь вектор, или массив типа string, который будет хранить каждое слово обоих предложений вместе как отдельный элемент (так как проверять тебе слова общие, то что предложения 2 а не 1, не имеет никакого логического значения именно здесь.)
затем создаешь еще один вектор или опять таки массив, типа int, и пошло поехало,
C++
1
for(int i=0; i<колво_элементов;i++)
чтобы насчитать "под" каждым элементом стринг хранилища, колличество повторяющихся слов.

знаю что блаблабла, но возможно это тебя направит. если нет, напиши наскок дружишь с векторами, чтоб я знал как тебе пример писать)

Добавлено через 15 минут
вообще логика может иметь это строение:


C++
1
2
3
4
5
6
7
8
for(int i=0;i<колво_элементов;i++)           //два фора, чтобы каждое слово проверялось на повторение с другими
  {
    for(int j=0;j<колво_элементов;j++)
      {
       if (    strcmp(хранилище_стрингов_на_месте_i, хранилище_стрингов_на_месте_j)==0)     //если равны
           хранилище_интов_на_месте_i += 1;
      }
  }
ну а потом выводишь опять таки уже в другом форе
C++
1
2
if(хран_интов_на_месте_х==1)
cout << хран_стрингов_на_месте_х;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2014, 02:49
Помогаю со студенческими работами здесь

Даны два слова. напечатать только те буквы слов, которые встречаются в обоих словах только один раз
даны два слова. напечатать только те буквы слов, которые встречаются в обоих словах только один...

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

Выбрать и напечатать только те символы, которые встречаются в нем только один раз
Разработать алгоритм:

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru