Другие языки программирования и технологии
Когда-нибудь сойду с ума с этим Паскалем....Помогите!!!!
Нужно написать программу, которая подсчитает сумму членов последовательности, построенной за К шагов. На каждом шаге между соседними элементами числовой последовательности (0 шаг последовательность 1, 1) их сумму. Т.е. на втором шаге у нас будет уже 1,2,1... Может тут нужен массив?
Можно динамическим списком это реализовать (процедуру суммирования напишите сами) :
program sequence;
type
PQueue = ^TQueue;
TQueue = record
data: integer;
next: PQueue;
end;
procedure create(node: PQueue; data: integer);
begin
new(node); node^.data := data; node^.next := nil;
end;
procedure insert(node: PQueue; data: Integer);
var temp: PQueue;
begin
new(temp);
temp^.data := data;
temp^.next := node^.next;
node^.next := temp;
end;
procedure insertSum(node: PQueue);
begin
while node^.next <> nil do
begin
insert(node, node^.data + node^.next^.data);
node := node^.next^.next;
end;
end;
procedure view(node: PQueue);
begin
while node <> nil do
begin
write(node^.data, ' ');
node := node^.next;
end;
writeln;
end;
procedure destroy(node: PQueue);
var temp: PQueue;
begin
temp := node;
while node <> nil do
begin
temp := node^.next;
dispose(node);
node := temp;
end;
end;
var queue: PQueue = nil; k: integer;
begin
{ Создаём первый элемент }
queue := new(PQueue);
queue^.data := 1;
queue^.next := nil;
insert(queue, 1); { Добавляем второй элемент }
{ Читаем количество итераций }
write('k? '); read(k);
while k >= 1 do
begin
insertSum(queue); { Очередной шаг итерации }
Dec(k);
end;
view(queue); { Смотрим последовательность }
destroy(queue); { Уничтожаем последовательность }
end.
Проверка:
$ echo 1 | ./sequence
k? 1 2 1
$ echo 2 | ./sequence
k? 1 3 2 3 1
$ echo 3 | ./sequence
k? 1 4 3 5 2 5 3 4 1
$ echo 4 | ./sequence
k? 1 5 4 7 3 8 5 7 2 7 5 8 3 7 4 5 1
$ echo 5 | ./sequence
k? 1 6 5 9 4 11 7 10 3 11 8 13 5 12 7 9 2 9 7 12 5 13 8 11 3 10 7 11 4 9 5 6 1
program sequence;
type
PQueue = ^TQueue;
TQueue = record
data: integer;
next: PQueue;
end;
procedure create(node: PQueue; data: integer);
begin
new(node); node^.data := data; node^.next := nil;
end;
procedure insert(node: PQueue; data: Integer);
var temp: PQueue;
begin
new(temp);
temp^.data := data;
temp^.next := node^.next;
node^.next := temp;
end;
procedure insertSum(node: PQueue);
begin
while node^.next <> nil do
begin
insert(node, node^.data + node^.next^.data);
node := node^.next^.next;
end;
end;
procedure view(node: PQueue);
begin
while node <> nil do
begin
write(node^.data, ' ');
node := node^.next;
end;
writeln;
end;
procedure destroy(node: PQueue);
var temp: PQueue;
begin
temp := node;
while node <> nil do
begin
temp := node^.next;
dispose(node);
node := temp;
end;
end;
var queue: PQueue = nil; k: integer;
begin
{ Создаём первый элемент }
queue := new(PQueue);
queue^.data := 1;
queue^.next := nil;
insert(queue, 1); { Добавляем второй элемент }
{ Читаем количество итераций }
write('k? '); read(k);
while k >= 1 do
begin
insertSum(queue); { Очередной шаг итерации }
Dec(k);
end;
view(queue); { Смотрим последовательность }
destroy(queue); { Уничтожаем последовательность }
end.
Проверка:
$ echo 1 | ./sequence
k? 1 2 1
$ echo 2 | ./sequence
k? 1 3 2 3 1
$ echo 3 | ./sequence
k? 1 4 3 5 2 5 3 4 1
$ echo 4 | ./sequence
k? 1 5 4 7 3 8 5 7 2 7 5 8 3 7 4 5 1
$ echo 5 | ./sequence
k? 1 6 5 9 4 11 7 10 3 11 8 13 5 12 7 9 2 9 7 12 5 13 8 11 3 10 7 11 4 9 5 6 1
нужен: массив, цикл for и несколько целочисленных
п. с. паскаль уг
п. с. паскаль уг
Похожие вопросы
- Программа на паскале! Помогите(бесплатно)
- Паскаль! Помогите пожалуйста разобраться в задачке.
- Помогите с паскалем. Помогите написать программу переводящую из 10-ой в 16-ую систему счисления на паскале
- Паскаль помогите: С
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
- Информатика.Практическая работа по паскалю.ПОМОГИТЕ.Все нужно ввиде паскаля.мучаюсь целый день.постоянно какие-то ошибки
- Сортировка массива (Паскаль) помогите пожалуйста
- кто нибудь знает турбо паскаль?помогите решить!выручайте,срочно надо!
- Турбо паскаль. Помогите плииз!!!
- Паскаль. Помогите решить