
02.05.2010, 13:38
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
Сообщение от Bengl
Pascal
Условие: Ввести строку, найти все символы которые встречаются в словах либо только с четными, либо только с нечетными порядковыми номерами.
Код:
Пример: мама мыла раму поэтому снег выпал
буква Ы встречается только в четных словах 2 и 6. Значит она нам подходит.
аналогично буквы
Р (только в 3 нечетном слове)
Э (только в 4 четном слове)
С (только в 5 нечетном слове)
В (только в 6 четном слове)
Л (во 2 и 6 четных словах)
П (в 4 и 6 четных словах)
T (в 4 слове)
O (в 4 слове)
Значит программа должна вывести нам буквы Ы Р Э С В Л П Т O.
Задачу нужно решить с использованием множеств.
Дело было вечером, делать было нечего))))
задачка была интересная, поэтому решил ее добить))) вот код, токо хз на счет рациональности))) первый раз такую делаю! но работает, это точно)))
PHP код:
var bukvi: set of char;
stroka,str,v,m:string;
a,u,i,x,y,e1,e2,k:integer;
s:array[1..100] of string;
q:array[1..100] of integer;
t:char;
label metka;
begin
bukvi:=[];
write('vvedite stroku: ');
readln(stroka);
str:=stroka;
a:=1;
k:=1;
y:=0;
e1:=0;
e2:=0;
while str<>'' do
begin
a:=pos(' ',str);
if a=0 then a:=length(str);
s[k]:=copy(str,1,a);
delete(str,1,a);
k:=k+1;
end;
for i:=1 to length(stroka) do
begin
t:=stroka[i];
if t in bukvi then goto metka;
for u:=1 to k do
begin
x:=pos(t,s[u]);
if x<>0 then
begin
y:=y+1;
q[y]:=u;
end;
end;
for u:=1 to y do
begin
if q[u] mod 2=0 then e1:=e1+1;
if q[u] mod 2<>0 then e2:=e2+1;
end;
if (e1=y) or (e2=y) then
begin
include(bukvi,t);
m:=m+t+' ';
end;
e1:=0;
e2:=0;
y:=0;
metka: end;
writeln(m);
readln;
end.
И скорее всего, код не читаемый))) но рабочий это проверено!
По больше бы таких задачек тут))
Последний раз редактировалось EndLeSSDre@M; 02.05.2010 в 13:43..
|
|
|