type zap=record
s1,s2,s3:integer;
end;
var a:array [1..6] of integer;
b:zap;
i:integer;
BEGIN
for i:=1 to 6 do
read(a);
b.s1:=a[1];
b.s2:=a[2];
b.s3:=a[3];
if (b.s1=a[6]) and (b.s2=a[5]) and (b.s3=a[4])then
writeln('true');
else
writeln('false');
END.
Динамические структуры данных. Списки.
Есть несколько идей, но как решить задачу именно с динамикой/списками - ?..
Хелпайте.
Цитата:
Originally posted by U-rique
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).
Есть несколько идей, но как решить задачу именно с динамикой/списками - ?..
Хелпайте.
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).
Есть несколько идей, но как решить задачу именно с динамикой/списками - ?..
Хелпайте.
Вставлять в список умеешь? тогда втсавляешь первую половину в начало, потом вынимаешь по одному и сравниваешь с остальными. Стек, знаешь ли.
Цитата:
Originally posted by U-rique
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).
С клавиатуры вводится последовательность, содержащая четное число символов. Определить, является ли последовательность палиндромом (палиндром одинаково читается с начала и конца).
Код:
только зачем туту запись?
эээ... возможно не то что нужно, но как вариант
Type
Link = ^Node;
Node = record
Data: integer;
Next: Link;
End;
Var
Head, z: link;
procedure list_initialize;
begin
new( head );
new( z );
head^.next := z;
z^.next := nil;
end;
procedure insert_after( v : integer; t : link );
var
x : link;
begin
new(x);
x^.data := v;
x^.next := t^.next;
t^.next := x;
end;
procedure delete_next( t : link );
var
del: link;
begin
del := t^.next;
t^.next := t^.next^.next;
dispose(del);
end;
На основе этих процедур можно составить необходимый Вам алгоритм:
1. Создаёте список
2. Считываете в него с клавиатуры символы
3. Можно создать ещё один список и заполнить его элементами первого списка, но только с конца. А можно вместо списка воспользоваться массивом.
4. Сравнить на равенство элементы списков или списка и массива.
спасибо всем за помощь. теперь постараюсь разобраться.
вроде без багов работает.. даже с пробелами)
Код:
program palindrom;
uses crt;
type el_p=^element;
element=record
data:char;
next:el_p;
end;
var start, buff:el_p;
i:byte;
palindrom:string;
flag:boolean;
begin
clrscr;
write('Vvedite stroku: '); readln(palindrom);
{string parity check}
while length(palindrom) mod 2 <> 0 do begin
palindrom:='';
writeln('Vi vveli ne4etnoe kol-vo bukv.');
write('Vvedite ewe ra3: '); readln(palindrom);
end;
new(start);
start^.data:=palindrom[1];
start^.next:=nil;
{insertion of string into list 'before first'}
for i:=2 to length(palindrom) do begin
new(buff);
buff^.data:=palindrom;
buff^.next:=start;
start:=buff;
end;
{list output}
i:=1;
while start<>nil do begin
{write(start^.data);}
if start^.data<>palindrom then flag:=false
else flag:=true;
start:=start^.next;
inc(i);
end;
writeln;
if flag then writeln('Stroka - palindrom.')
else writeln('Stroka - NE palindrom.');
readkey;
end.
uses crt;
type el_p=^element;
element=record
data:char;
next:el_p;
end;
var start, buff:el_p;
i:byte;
palindrom:string;
flag:boolean;
begin
clrscr;
write('Vvedite stroku: '); readln(palindrom);
{string parity check}
while length(palindrom) mod 2 <> 0 do begin
palindrom:='';
writeln('Vi vveli ne4etnoe kol-vo bukv.');
write('Vvedite ewe ra3: '); readln(palindrom);
end;
new(start);
start^.data:=palindrom[1];
start^.next:=nil;
{insertion of string into list 'before first'}
for i:=2 to length(palindrom) do begin
new(buff);
buff^.data:=palindrom;
buff^.next:=start;
start:=buff;
end;
{list output}
i:=1;
while start<>nil do begin
{write(start^.data);}
if start^.data<>palindrom then flag:=false
else flag:=true;
start:=start^.next;
inc(i);
end;
writeln;
if flag then writeln('Stroka - palindrom.')
else writeln('Stroka - NE palindrom.');
readkey;
end.