Jump to content

Паскаль


Recommended Posts

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

Link to comment
Share on other sites

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 я знал. Но все равно спасибо.

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

Link to comment
Share on other sites

Бумер:

поверьте она будет выдавать нормальные результаты.
Это же не вопрос веры :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)

Edited by Тролль
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...