Показать сообщение отдельно

  #5  
Старый 02.05.2010, 13:38
EndLeSSDre@M
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме:
3055344

Репутация: 259
Отправить сообщение для EndLeSSDre@M с помощью ICQ
По умолчанию

Цитата:
Сообщение от Bengl  
Pascal

Условие: Ввести строку, найти все символы которые встречаются в словах либо только с четными, либо только с нечетными порядковыми номерами.

Код:
Пример: мама мыла раму поэтому снег выпал

буква Ы встречается только в четных словах 2 и 6. Значит она нам подходит.

аналогично буквы
Р (только в 3 нечетном слове)
Э (только в 4 четном слове)
С (только в 5 нечетном слове)
В (только в 6 четном слове)
Л (во 2 и 6 четных словах)
П (в 4 и 6 четных словах)
T (в 4 слове)
O (в 4 слове)

Значит программа должна вывести нам буквы Ы Р Э С В Л П Т O.
Задачу нужно решить с использованием множеств.
Дело было вечером, делать было нечего))))
задачка была интересная, поэтому решил ее добить))) вот код, токо хз на счет рациональности))) первый раз такую делаю! но работает, это точно)))

PHP код:
var bukviset of char;
    
stroka,str,v,m:string;
    
a,u,i,x,y,e1,e2,k:integer;
    
s:array[1..100of string;
    
q:array[1..100of 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[umod 2=0 then e1:=e1+1;
      if 
q[umod 2<>0 then e2:=e2+1;
    
end;
    
    if (
e1=y) or (e2=ythen
    begin
      
include(bukvi,t);
      
m:=m+t+' ';
    
end;
    
e1:=0;
    
e2:=0;
    
y:=0;
    
metkaend;
  
writeln(m);
  
readln;
end
И скорее всего, код не читаемый))) но рабочий это проверено!

По больше бы таких задачек тут))

Последний раз редактировалось EndLeSSDre@M; 02.05.2010 в 13:43..
 
Ответить с цитированием