Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите встроить в код.

Автор: Lotan 23.05.2011 21:23

Есть задача. Написать программу для вывода слов палиндромов (то есть тех, которые и в одну и в другую сторону читаются одинаково). Так вот, программу написал, но нужно чтобы прога еще и выводила слова-палиндромы, в которых гласных букв больше, чем согласных.

Вот, собственно мой код:

Program Palindroms;
uses crt;
const
Delim= [' ', ',', '.', '?', '!'];
var
s,stmp:string;
i,j,l:integer;
f:boolean;
begin
clrscr;
writeln('s:');
readln(s);
i:=1;
while i<=length(s) do
if (not(s[i] in delim)) then
begin
j:=i;stmp:='';
while (s[j]<>' ')and(j<=length(s)) do
begin
stmp:=stmp+s[j];
j:=j+1;
end;
f:=true;
l:=length(stmp);
for j:=1 to l do
if stmp[j]<>stmp[l-j+1] then f:=false;
if f then writeln(stmp);
i:=i+length(stmp);
end
else i:=i+1;
readln
end.


Собственно знаю, что надо делать, но никак не могу встроить в свой код вот это :


В конце для каждого найденного палиндрома организую цикл вида:
N_glas:=0;
N_sogl:=0;
For k:=1 to length(stmp) do
begin
if stmp[k] in Glas then Inc(N_glas);
if stmp[k] in Sogl then Inc(N_sogl);
end;
If N_glas>N_sogl then writeln(stmp);



Помогите, тут дел на 5 минут, а я жутко туплю ;)

Автор: IUnknown 23.05.2011 21:40

Не надо считать и гласные и согласные. Достаточно изменять только, скажем, гласные, увеличивать или уменьшать... И сравнивать результат с 0 в конце прохода по палиндрому:

   N_glas := 0;
for j:=1 to l do
begin
if stmp[j] in Glas then
inc(N_glas)
else
dec(N_glas);

if stmp[j]<>stmp[l-j+1] then f:=false;
end;
if f and (N_glas > 0) then writeln(stmp);


Автор: Lotan 23.05.2011 21:52

а как встроить это в мой исходный код, а главное куда?))

Автор: IUnknown 23.05.2011 21:59

Значит, это не твой код, раз не можешь настолько простую вещь добавить...

После строки l:=length(stmp);
должен быть тот кусок кода, который я показал. Не забудь описать переменную N_glas, и множество Glas.

Автор: Lotan 23.05.2011 22:05

Большое спасибо.