Задачи осталось две. Помогли. Пожалуйста нужно второю очень непонятно как скобки раскрыть. 2. Даны два многочлена, заданные массивами своих коэффициентов. Получить произведение многочленов (массив коэффициентов) (пример на рисунке)
3. Исходный текст вводится пользователем с экрана в виде одной или нескольких строк. На экране необходимо сохранить протокол работы: исходный и преобразованный текст. В исходном тексте выделить цветом заданные фрагменты. Определить, является ли строка текста палиндромом, т.е. читаемой в прямом и обратном направлении (например, строка «А роза упала на лапу Азора» - палиндром). При проверке строки убрать из нее все знаки препинания.
это наработка
Code
program task03;
uses WinCRT;
var Str: string;
function IsPalindrom(instr:string):boolean;
const trash : set of char = [' ','.',',','!','?'];
var left:string;
i,Len:integer;
ch:char;
Pal:boolean;
begin
Pal := true;
left:='';
for i:=1 to Length(instr) do
begin
ch := instr[i];
if ch in trash then else
begin
left:=left+Upcase(ch);
end;
end;
Len := Length(left);
for i:=Len downto 1 do
begin
if left[i]<>left[Len-i+1] then
Pal := false;
end;
IsPalindrom := Pal;
end;
Begin
write('Enter string:');read(Str);
if IsPalindrom(Str) then
writeln('Eto palindrom')
else
writeln('Eto fignya kakaya-to');
End.
Вопрос 1-й как сделать чтобы прога понимала русский.
Мне посоветовали
Code
function UpCaseRus(ch:char):char;
begin
case ch of
'а':UpCaseRus:='A';
'б':UpCaseRus:='Б';
...
'я':UpcaseRus:='Я';
end;
end;
Скажите плиз, в какое место кода это вставить.
Вопрос №2 - Нужно чтобы появлялся Конечный результат (то есть я вижу первоначальный текст, а ниже появляется результат) в цвете если палиндром (само предложение) или фраза "нет палиндромов".
Вопрос №3 Нужна возможность ввода 3 -4 или n-го кол-ва строк сразу. и чтобы прога обрабатывала эти строки отдельно (1, 2 ,3 строка... и т.д.).
Добавлено (17.04.2009, 22:19)
---------------------------------------------
Code
program task03;
uses WinCRT;
const MaxN=50;
var
n:integer;
A:array[1..MaxN+1] of string;
function IsPalindrom(instr:string):boolean;
const trash : set of char = [' ','.',',','!','?'];
var left:string;
i,Len:integer;
ch:char;
Pal:boolean;
begin
Pal := true;
left:='';
for i:=1 to Length(instr) do
begin
ch := instr[i];
if ch in trash then else
begin
left:=left+Upcase(ch);
end;
end;
Len := Length(left);
for i:=Len downto 1 do
begin
if left[i]<>left[Len-i+1] then
Pal := false;
end;
IsPalindrom := Pal;
end;
Begin
n:=0;
writeln('Введите текст. После последней строки повторно нажмите ENTER');
repeat
inc(n);
repeat
readln(A[n]);
until (n>1) or (A[n]<>'');
until (A[n]='') or (n=MaxN);
dec(n);
if IsPalindrom(A[n])
then
writeln('Это палиндром');
else
writeln('Это не палиндром');
End.
Вот что вышло.
1. не обрабатывает Фразы - палиндромы
2. Выводит результат только для последней из фраз. - надо чтобы для каждой.