Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
19 / 2 / 0
Регистрация: 15.02.2013
Сообщений: 149
1

Множества: Напечатать в алфавитном порядке: все гласные буквы, которые входят в каждое слово

28.04.2013, 21:18. Показов 1300. Ответов 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
34
35
36
Program mn;
uses crt;
 
procedure Task;
const t1:array[1..6] of char = ('а','е','ё','и','о','у','ю','я','э','ы');
const t2:set of char = ['а','е','ё','и','о','у','ю','я','э','ы'];
var s,t,r:string;
i:integer;
begin
readln(s);
i:=pos('.',s);
delete(s,i,length(s)-i+1);
s:=s+',';
t:=s;
for i:=1 to 6 do {for each char}
  begin
    while pos(',',s)<>0 do
      if pos(t1[i],copy(s,1,pos(',',s)))<>0 then delete(s,1,pos(',',s)) else break;
    if s='' then write(t1[i]);
    s:=t;
  end;
write(' ');
for i:=ord('a') to ord('z') do {for each char}
  if not(chr(i) in t2) then
  begin
    while pos(',',s)<>0 do
      if pos(chr(i),copy(s,1,pos(',',s)))=0 then delete(s,1,pos(',',s)) else break;
    if s='' then write(chr(i));
    s:=t;
  end;
end;
 
begin
Task;
readln;
end.
Добавлено через 27 минут
Не тот код скинула:
Вот этот:
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
34
35
36
program mn;
uses crt;
 
procedure Task;
const t1:array[1..10] of char = ('а','е','ё','и','о','у','ю','я','э','ы');
const t2:set of char = ['а','е','ё','и','о','у','ю','я','э','ы'];
var s,t,r:string;
i:integer;
begin
readln(s);
i:=pos('.',s);
delete(s,i,length(s)-i+1);
s:=s+',';
t:=s;
for i:=1 to 10 do {for each char}
  begin
    while pos(',',s)<>0 do
      if pos(t1[i],copy(s,1,pos(',',s)))<>0 then delete(s,1,pos(',',s)) else break;
    if s='' then write(t1[i]);
    s:=t;
  end;
write(' ');
for i:=ord('а') to ord('я') do {for each char}
  if not(chr(i) in t2) then
  begin
    while pos(',',s)<>0 do
      if pos(chr(i),copy(s,1,pos(',',s)))=0 then delete(s,1,pos(',',s)) else break;
    if s='' then write(chr(i));
    s:=t;
  end;
end;
 
begin
Task;
readln;
end.
С выводом проблемы. Выводит буквы и символы какие-то непонятные
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2013, 21:18
Ответы с готовыми решениями:

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

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

Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое слово
1. Запись имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.

Напечатать в алфавитном порядке все гласные буквы, которые входят в каждое четное слово
Тема: Строки. Множества. 3.2.Дан текст на русском языке. Напечатать в алфавитном порядке все...

1
142 / 148 / 116
Регистрация: 15.11.2012
Сообщений: 535
Записей в блоге: 2
28.04.2013, 23:16 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
34
35
36
program mn; Uses Crt;
Type TMas=array['a'..'z'] of Integer;
Var Ch:Char;
    t1:TMas;
    k:Integer;
procedure Task;
{const t2:set of char = ['а','е','ё','и','о','у','ю','я','э','ы'];}
var
   s,t,r:string;
 
   t2:Set Of Char;
   i:integer;
   Ch:Char;
begin
Writeln('stroka = '); readln(s);
k:=0;
 
While s<>'' Do Begin
      i:=1; t2:=[];
      While (s[i]<>',')and(s<>'') Do Begin
            If Not (s[i] in t2) Then Begin
               Inc(t1[s[i]]);
               t2:=t2+[s[i]];
            End;
            Inc(i);
      End;
      Delete(s,1,i);
      Inc(k);
End;
End;
 
begin
Task;
For Ch:='a' To 'z' Do If t1[Ch]=k Then Write(Ch:3);
readln;
end.
Добавлено через 4 минуты
здесь счётчик k считает кол-во слов в предложении
а массив с символьной индексацией в купе с множеством символов считает кол-во каждого из символов в разных словах, причём одинаковые буквы в слове не повторяются.
Таким образом достижимо решение задачи нахождения всех букв которые входят в каждое слово
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2013, 23:16

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

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

Строки. Множества. Напечатать все гласные буквы, которые входят в каждое четное слово
Напишите програму! 3.1. Составить программу, удаляющую в строке все, что заключено между фигурными...

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

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


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

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

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