|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вывести все звонкие согласные, которые входят хотя бы в одно слово
Код:
{$APPTYPE CONSOLE} uses SysUtils; var s,slovo,slovo1,slovo2:string; k,i,j,ns,ks:integer; c:char; mn1, mn2,mn3,sb: set of char; begin writeln('Enter string '); readln(s); sb:=['b','d','g','j','n','m','r','v','z','w']; while (s[i]=' ') and (i<=length(s)) do i:=i+1; while(s[i]<>' ') and (i<=length(s)) do i:=i+1; begin mn1:= mn1 +[s[i]]; i:=i+1; end; i:=length(s); while(s[i]=' ') and (i>0) do i:=i-1; while(s[i]<>' ') and(i>0) do i:=i-1; begin mn2:=mn2+[s[i]]; i:=i-1; end; while i<=k do begin while(s[i]=' ') and (i<=k)do i:=i+1; ns:=i; while(s[i]<>' ') and (i<=k) do i:=i+1; ks:=i; slovo:=copy(s,ns,ks-ns); for j:=1 to length(slovo) do mn3:=mn3 +[slovo[i]]; end; mn3:=mn3*sb -mn2 -mn1; for c:=chr(0) to chr(255) do if c in mn3 then write(c,' '); readln; end. Последний раз редактировалось Asira, 27.12.2009 в 18:24. |
#2
|
|||
|
|||
На счет правильности не знаю, вот тебе рабочий вариант:
Код:
{$APPTYPE CONSOLE} uses SysUtils; var S:String; b:byte; sb: set of char; begin Writeln('Enter string '); Readln(S); sb:=['b','d','g','j','n','m','r','v','z','w']; Delete(S, 1, Pos(' ', S)); b:=length(s); while (b > 1) and (S[b]<>' ') do Dec(b); Delete(S, b, Length(S)-(b+1)); for b:=1 to Length(S) do if S[b] in sb then begin sb:=sb-[S[b]]; write(S[b],' '); end; readln; end. Последний раз редактировалось Asinkrit, 15.12.2009 в 17:33. |
#3
|
|||
|
|||
СПАСИБИЩЕ!!!!!!!!!!!!!!!Хоть один отзывчивый человек тут нашёлся!!!!!
|
#4
|
|||
|
|||
Да не за что, главное, что бы было понимание, как этот код работает!)
|
#5
|
|||
|
|||
хотя вроде бы эта программа тож не удовлетворяет условию-
за исключением тех, которые входят в первое и последнее слово |
#6
|
|||
|
|||
Ну дык, первое и последнее слова, сразу отбрасываются.
Код:
Delete(S, 1, Pos(' ', S)); b:=length(s); while (b > 1) and (S[b]<>' ') do Dec(b); Delete(S, b, Length(S)-(b+1)); |
#7
|
|||
|
|||
А вдруг эти согласные звонкие встречаются и в первом слове например а прога их выведет хотя не должна этого делать....
|
#8
|
|||
|
|||
Например есть строка
drecgre cghkjfjkld crtuifh drefjtg прога выведет d ...... хотя не должна этого делать ведь d есть и в первом слове помимо второго |
#9
|
|||
|
|||
Не выведет, так как эти слова - именно первое и последнее отбрасываются, а после проверятся вся строка. Внимательнее смотри, код работает по твоим условиям.
Удаляем все до первого пробела: Код:
Delete(S, 1, Pos(' ', S)); Код:
b:=length(s); while (b > 1) and (S[b]<>' ') do Dec(b); Delete(S, b, Length(S)-(b+1)); |
#10
|
|||
|
|||
Понял что ты имеешь ввиду, держи:
Код:
{$APPTYPE CONSOLE} uses SysUtils; var S, NewS:String; b:byte; sb: set of char; begin Writeln('Enter string '); Readln(S); sb:=['b','d','g','j','n','m','r','v','z','w']; for b:=1 to Pos(' ', S) do if S[b] in sb then sb:=sb-[S[b]]; Delete(S, 1, Pos(' ', S)); b:=length(s); while (b > 1) and (S[b]<>' ') do begin if S[b] in sb then sb:=sb-[S[b]]; Dec(b); end; Delete(S, b, Length(S)-(b+1)); for b:=1 to Length(S) do if S[b] in sb then begin sb:=sb-[S[b]]; write(S[b],' '); end; readln; end. Последний раз редактировалось Asinkrit, 15.12.2009 в 17:47. |
#11
|
|||
|
|||
Спасибо!!!!!!!!!!!! Вот теперя всё тип-топ!!!!!!!!!
|