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

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

Восстановить пароль Регистрация
 
Sn4ke
0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 5
11.04.2014, 01:44     Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++) #1
Задание если понадобится:
Даны два предложения. Напечатать слова, которые встречаются в двух предложениях только один раз.

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

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sn4ke
0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 5
18.04.2014, 02:02  [ТС]     Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++) #2
Все ещё нужна помощь
Komi
 Аватар для Komi
6 / 6 / 2
Регистрация: 10.08.2012
Сообщений: 82
18.04.2014, 02:49     Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++) #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 << хран_стрингов_на_месте_х;
Yandex
Объявления
18.04.2014, 02:49     Напечатать слова, которые встречаются в двух предложениях только один раз (Pascal -> C++)
Ответ Создать тему
Опции темы

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