Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Паскаль


Рекомендуемые сообщения

Есть строка, в которой разделены запятыми слова. В конце стоит точка. Надо выделить гласные английские буквы, которые входят в КАЖДОЕ слов и вывести их в алфавитном порядке. Я все сделал - прога пашет, но сейчас нет возможности выложить - завтра выложу или сегодня вечером. Говорят надо использовать множества, функцию определения длины строки и больше никаких процедур и функций!!! Как сделать???

Ссылка на комментарий
Поделиться на другие сайты

Бумер:

length(str) выдает длину строки str
источник http://tpascal.h15.ru/sprav5.html
Ссылка на комментарий
Поделиться на другие сайты

program a1;var a,b,c:string; i,j,k,t:byte; glasn:set of char; z:char; ba,be,bi,bo,bu:boolean;beginwriteln ('wwedite stroku'); readln(a);glasn:=['a','e','o','u','i'];k:=0;while a[k]<>',' dobegink:=k+1;j:=1;while a[i]<>',' do i:=i+1;t:=i;for i:=1 to t do begin if a[i] in glasn then  begin  z:=a[i]; b:=b+z;  end; end;c:=b;end;t:=length©;for i:=1 to t dobeginif c[i]='a' then ba:=true;if c[i]='e' then be:=true;if c[i]='i' then bi:=true;if c[i]='o' then bo:=true;if c[i]='u' then bu:=true;end;if ba=true then write(' a');if be=true then write (' e');if bi=true then write (' i');if bo=true then write (' o');if bu=true then write (' u');end.

Про функцию length я знал. Но все равно спасибо.

Вот мне сказали, что эта прога - это поездка в Европу через Владивосток. НО попробуйте откомпилировать ее и поверьте она будет выдавать нормальные результаты. Не пойму, как надо проще сделать????

Ссылка на комментарий
Поделиться на другие сайты

Бумер:

поверьте она будет выдавать нормальные результаты.
Это же не вопрос веры :bye1: .

Я ввел acedduz,ref.

Получил вместо буквы е на выходе целую последовательность a e i o u :sly:

Не пойму, как надо проще сделать????
Как минимум, убрать такие ужасные выражения, как if ba=true then ... Вполне достаточно if ba then ...

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

var M,T:set of Char; i:Byte; c,d:Char; s:String;beginReadLn(s);M:=['a','e','o','i','u','y','A','E','O','I','U','Y']; i:=0;repeatT:=[];repeat i:=i+1; T:=T+[s[i]];until s[i]in['.',','];M:=M*T;until s[i]in['.'];for c:='a'to'z' dobegin d:=Upcase©;if d in M then Write(d);if c in M then Write© end;WriteLnend.

Скорее всего, функция Upcase относится к допустимым, но если она не нравится, можно обойтись приведением типов, написав вместо Upcase( c) выражение Char(Byte( c)-32)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...