Ввести фамилию, имя и отчество, как одно данное типа строка. Определить длину строки и...

0 голосов
316 просмотров

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


Информатика (15 баллов) | 316 просмотров
0

Только на пользовательских процедурах делать, без них будет такое спагетти...

0

Впрочем. можно без них, но тогда надо ставить жесткое условие без проверки. Если оно будет нарушено, программа не станет работать должным образом.

Дан 1 ответ
0 голосов
Правильный ответ

Const
  Gl=['А','Е','Ё','И','О','У','Ы','Э','Ю','Я',
      'а','е','ё','и','о','у','ы','э','ю','я'];
var
  s,fam,otch:string;
  i,j,n,nGl:integer;
begin
  Writeln('Введите через один пробел фамилию, имя и отчество');
  Readln(s);
  fam:=''; i:=1; n:=Length(s);
  repeat
    fam:=fam+s[i]; i:=i+1
  until s[i]=' ';
  otch:=''; j:=n;
  repeat
    otch:=s[j]+otch; j:=j-1
  until s[j]=' ';
  { im:=Copy(s,i+1,j-i-1); так можно получить имя }
  nGl:=0;
  for i:=1 to n do
    if s[i] in Gl then nGl:=nGl+1;
  Writeln('Длина введенной строки в символах равна ',n);
  Writeln('Количество гласных букв в строке равно ',nGl);
  Writeln('Введено отчество: ',otch);
  Writeln('Количество букв в фамилии равно ',Length(fam))
end.

Тестовое решение:
Введите через один пробел фамилию, имя и отчество
Иванов Петр Сергеевич
Длина введенной строки в символах равна 21
Количество гласных букв в строке равно 8
Введено отчество: Сергеевич
Количество букв в фамилии равно 6


(142k баллов)
0

Исправлена описка в слове "Длина"