Предмет: Информатика,
автор: Svyatoslav359
Дана строка, слова разделены пробелом, напечатать в алфавитном порядке все гласные, которые входят хотя бы в одно слово, кроме первого.
Помогите с задачкой в Паскале.
Ответы
Автор ответа:
0
const
gl = 'аеёиоуыэюя';
var
s: string;
f: array[1..10] of boolean;
i, m: integer;
begin
Write('Введите фразу: '); Readln(s);
m := Pos(' ', s);
if m = 0 then Writeln('В строке отсутствуют пробелы')
else begin
for i := 1 to 10 do f[i] := False;
for i := m + 1 to length(s) do
case s[i] of
'А', 'а': f[1] := True;
'Е', 'е': f[2] := True;
'Ё', 'ё': f[3] := True;
'И', 'и': f[4] := True;
'О', 'о': f[5] := True;
'У', 'у': f[6] := True;
'Ы', 'ы': f[7] := True;
'Э', 'э': f[8] := True;
'Ю', 'ю': f[9] := True;
'Я', 'я': f[10] := True
end;
Write('Найдены гласные: ');
for i := 1 to 10 do
if f[i] then Write(gl[i], ' ');
Writeln
end
end.
Тестовое решение:
Введите фразу: Это проверочная фраза "Мама мыла раму". Конец теста.
Найдены гласные: а е о у ы я
В Pascal.ABC можно написать и короче:
const
gl = 'аеёиоуыэюя';
var
s: string;
f: array[1..10] of boolean;
i, m, p: integer;
begin
Write('Введите фразу: '); Readln(s);
m := Pos(' ', s);
if m = 0 then Writeln('В строке отсутствуют пробелы')
else begin
for i := 1 to 10 do f[i] := False;
s := LowerCase(s); { перекодировать к нижнему регистру }
for i := m + 1 to length(s) do
begin
p := Pos(s[i], gl);
if p > 0 then f[p] := True
end;
Write('Найдены гласные: ');
for i := 1 to 10 do
if f[i] then Write(gl[i], ' ');
Writeln
end
end.
gl = 'аеёиоуыэюя';
var
s: string;
f: array[1..10] of boolean;
i, m: integer;
begin
Write('Введите фразу: '); Readln(s);
m := Pos(' ', s);
if m = 0 then Writeln('В строке отсутствуют пробелы')
else begin
for i := 1 to 10 do f[i] := False;
for i := m + 1 to length(s) do
case s[i] of
'А', 'а': f[1] := True;
'Е', 'е': f[2] := True;
'Ё', 'ё': f[3] := True;
'И', 'и': f[4] := True;
'О', 'о': f[5] := True;
'У', 'у': f[6] := True;
'Ы', 'ы': f[7] := True;
'Э', 'э': f[8] := True;
'Ю', 'ю': f[9] := True;
'Я', 'я': f[10] := True
end;
Write('Найдены гласные: ');
for i := 1 to 10 do
if f[i] then Write(gl[i], ' ');
Writeln
end
end.
Тестовое решение:
Введите фразу: Это проверочная фраза "Мама мыла раму". Конец теста.
Найдены гласные: а е о у ы я
В Pascal.ABC можно написать и короче:
const
gl = 'аеёиоуыэюя';
var
s: string;
f: array[1..10] of boolean;
i, m, p: integer;
begin
Write('Введите фразу: '); Readln(s);
m := Pos(' ', s);
if m = 0 then Writeln('В строке отсутствуют пробелы')
else begin
for i := 1 to 10 do f[i] := False;
s := LowerCase(s); { перекодировать к нижнему регистру }
for i := m + 1 to length(s) do
begin
p := Pos(s[i], gl);
if p > 0 then f[p] := True
end;
Write('Найдены гласные: ');
for i := 1 to 10 do
if f[i] then Write(gl[i], ' ');
Writeln
end
end.
Похожие вопросы
Предмет: Математика,
автор: nataliepavlova80
Предмет: Биология,
автор: efimukmaria057
Предмет: История,
автор: gulsimbisevna
Предмет: Алгебра,
автор: YanaHis