Динамич массивы. Паскаль

C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

Господа! Помогите пожалуйста! Сама просто физически не успеваю. Завтра сдавать динамические структуры данных!

#1 Постройте первые N строк треугольника Паскаля.
#2 Даны две последовательности. Проверьте, можно ли одну из них получить вычёркиванием некоторых элементов другой.

Только с помощью динамических структур.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

Уважаемый MOTOCoder!
Вы моя последняя надежда! мне еще 8 штук различных задач к завтраму делать!! ПОМОГИТЕ!!
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Вот Треугольник паскаля:
[syntax='Delphi']
Program TrigonPas;

uses Crt;

type
Mas=array [1..1]of integer;
p=^Mas;
c=array[1..1]of p;

var
A:^c;
n, i, j, y, x: integer;

Begin
ClrScr;
{$R-}
x := (80 - 1) div 2;
y := 2;
Write ('Введите натуральное число: ');
Readln (n);
GetMem (A, n * SizeOf (pointer));
GetMem (A^ [1], SizeOf (integer));
A^ [1]^ [1] := 1;
GotoXY (x, y);
Write (A^ [1]^ [1]);
for i := 2 to n do
begin
Dec (x);
Inc (y);
GotoXY (x, y);
GetMem (A^ , i * SizeOf (integer));
for j := 1 to i do
begin
if (j = 1)
or
(j = i)
then
A^ ^ [j] := 1
else
A^ ^ [j] := A^ ^ [j] + A^ ^ [j - 1];
Write (A^ ^ [j], ' ');
end;
end;
for i := 1 to n do
FreeMem (A^ , i * SizeOf (integer));
FreeMem (A, n * SizeOf (pointer));
Readln;
End.
[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

Спасибо!!!! Искренне спасибо!!!!!!
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

MOTOCoder, вторую пожалуйста!!!! Нет времени разбираться, только сегодня задали, а завтра уже сдавать!
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Со второй пока не разобраться.
Первую я решал довольно давно, и то часть алгоритма брал из какой-то книги.
Попробую сделать и вторую.
Ни что так не ограничивает фантазию программиста, как компилятор...
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

спасибо. (если можно до 00.00 часов по Москве, а то у меня трафик ограничен!)
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Вроде так:
[syntax='Delphi']
program Sequense;

type
PItem=^Item;
Item=record
D:integer;
L:Pointer;
end;


var
A,B,X,Y:PItem;
SA,SB:integer;
i,J:integer;
index1,index2:integer;


function ReadSeq(Size:integer):PItem;
var
i:integer;
n:^integer;

begin
Y:=nil;
readln(n^);
for i:=1 to Size-1 do
begin
X:=Y;
New(Y);
Y^.D:=n^;
Y^.L:=X;
readln(n^);
end;
X:=Y;
New(Y);
Y^.D:=n^;
Y^.L:=X;
ReadSeq:=Y;
end;

function IsAfterIdx(Num:integer;idx:integer):integer;
var f:boolean;
id:integer;
i:integer;
begin
X:=A;
id:=0;
for i:=1 to SA do
begin
if i> idx then
begin
if X^.D=Num then
begin
id:=i;
end;
end;
X:=X^.L;
end;

IsAfterIdx:=id;
end;


begin
writeln('Введите размер последовательности A:');
readln(SA);
writeln('Введите размер последовательности B:');
readln(SB);
writeln('Введите элементы последовательности A:');
A:=ReadSeq(SA);
writeln('Введите элементы последовательности B:');
B:=ReadSeq(SB);

Y:=B;
for J:=1 to SB do
begin
index1:=IsAfterIdx(Y^.D,index2);
Y:=Y^.L;
if index1<>0 then
begin
index2:=index1;
end;

end;

if index2<sb-1 then writeln('no') else writeln('yes');


{X:=A;
for i:=1 to SA do
begin
write(X^.D,' ');
X:=X^.L;
end; }

readln;
end.



[/syntax]
Ни что так не ограничивает фантазию программиста, как компилятор...
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Не успел )))
It's a long way to the top if you wanna rock'n'roll
C_O_D_E
Сообщения: 296
Зарегистрирован: 13 фев 2008, 20:10
Откуда: Беларусь. Орша
Контактная информация:

MOTOCoder Спасибо.
Я Вам должна.
Спасибо.
Если назначен специальный человек для контроля за чистотой исходной информации, то найдется изобратательный идиот, который придумает способ, чтобы неправильная информация прошла этот контроль.
Ответить