Бумер Posted November 30, 2006 Report Share Posted November 30, 2006 Есть строка, в которой разделены запятыми слова. В конце стоит точка. Надо выделить гласные английские буквы, которые входят в КАЖДОЕ слов и вывести их в алфавитном порядке. Я все сделал - прога пашет, но сейчас нет возможности выложить - завтра выложу или сегодня вечером. Говорят надо использовать множества, функцию определения длины строки и больше никаких процедур и функций!!! Как сделать??? Link to comment Share on other sites More sharing options...
Форматцевт Posted November 30, 2006 Report Share Posted November 30, 2006 Бумер: length(str) выдает длину строки str источник http://tpascal.h15.ru/sprav5.html Link to comment Share on other sites More sharing options...
Тролль Posted November 30, 2006 Report Share Posted November 30, 2006 Бумер: [Я все сделал - прога пашет]*[Как сделать???]=? Link to comment Share on other sites More sharing options...
Бумер Posted November 30, 2006 Author Report Share Posted November 30, 2006 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 More sharing options...
Тролль Posted November 30, 2006 Report Share Posted November 30, 2006 (edited) Бумер: поверьте она будет выдавать нормальные результаты. Это же не вопрос веры . Я ввел acedduz,ref. Получил вместо буквы е на выходе целую последовательность a e i o u Не пойму, как надо проще сделать????Как минимум, убрать такие ужасные выражения, как 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 November 30, 2006 by Тролль Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now