Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите встроить в код.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Lotan
Есть задача. Написать программу для вывода слов палиндромов (то есть тех, которые и в одну и в другую сторону читаются одинаково). Так вот, программу написал, но нужно чтобы прога еще и выводила слова-палиндромы, в которых гласных букв больше, чем согласных.

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

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
Не надо считать и гласные и согласные. Достаточно изменять только, скажем, гласные, увеличивать или уменьшать... И сравнивать результат с 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
а как встроить это в мой исходный код, а главное куда?))
IUnknown
Значит, это не твой код, раз не можешь настолько простую вещь добавить...

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