Бумер Опубликовано 30 ноября, 2006 Жалоба Поделиться Опубликовано 30 ноября, 2006 Есть строка, в которой разделены запятыми слова. В конце стоит точка. Надо выделить гласные английские буквы, которые входят в КАЖДОЕ слов и вывести их в алфавитном порядке. Я все сделал - прога пашет, но сейчас нет возможности выложить - завтра выложу или сегодня вечером. Говорят надо использовать множества, функцию определения длины строки и больше никаких процедур и функций!!! Как сделать??? Ссылка на комментарий Поделиться на другие сайты Поделиться
Форматцевт Опубликовано 30 ноября, 2006 Жалоба Поделиться Опубликовано 30 ноября, 2006 Бумер: length(str) выдает длину строки str источник http://tpascal.h15.ru/sprav5.html Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 ноября, 2006 Жалоба Поделиться Опубликовано 30 ноября, 2006 Бумер: [Я все сделал - прога пашет]*[Как сделать???]=? Ссылка на комментарий Поделиться на другие сайты Поделиться
Бумер Опубликовано 30 ноября, 2006 Автор Жалоба Поделиться Опубликовано 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 я знал. Но все равно спасибо. Вот мне сказали, что эта прога - это поездка в Европу через Владивосток. НО попробуйте откомпилировать ее и поверьте она будет выдавать нормальные результаты. Не пойму, как надо проще сделать???? Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 30 ноября, 2006 Жалоба Поделиться Опубликовано 30 ноября, 2006 (изменено) Бумер: поверьте она будет выдавать нормальные результаты. Это же не вопрос веры . Я ввел 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) Изменено 30 ноября, 2006 пользователем Тролль Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти