Перевод кода с Си - Turbo Pascal (34006)

Формулировка задачи:

Помогите,пожалуйста,перевести с С на Паскаль..
#include <malloc.h>
#include <stdio.h>
 
struct tagStack{
  double data;
  struct tagStack *prev;
}*stack=0;
 
void push(double d){
 struct tagStack* s;
  s=malloc(sizeof(struct tagStack));
  s->prev=stack;
  s->data=d;
  stack=s;
}
void pop(){
  struct tagStack* tmp;
  fprintf(stdout, "%g\n", stack->data);
  tmp=stack;
  stack=stack->prev;
  free(tmp);
}
int main(){
  double x;
  for(x=0.0; x<1000.1; x+=0.1)
                            push(x); 
  while(stack!=0)
                 pop();
  return 0;
}

Код к задаче: «Перевод кода с Си - Turbo Pascal (34006)»

textual
type
  PNode=^TNode;  //объявление новых типов данных
  TNode=record
    prev: PNode;
    data: double;
  end;
 
var
  top: PNode;
 
procedure push(d: double);
var
  p: PNode;
begin
  New(p);       //выделение памяти
  p^.prev:=top; //сохранение адреса вершины стека
  top:=p;       //присвоение вершине стека адреса нового элемента
  p^.data:=d;
end;
function pop: double;
var
  p: PNode;        //объявление временной переменной
begin
  pop:=top^.data;
  p:=top;          //сохранение адреса вершины стека
  top:=top^.prev;  //присвоение вершине стека адреса предыдущего элемента
  Dispose(p);      //освобождение памяти
end;
 
var
  i: integer;
begin
  top:=nil;  //инициализация глоб.переменной нулевым указателем
  for i:=0 to 1000 do push(i*0.1);     //выполнение 1000 вставок в стек
  while top<>nil do WriteLn(pop:8:1);  //выталкивание всего содержимого стека
end.

13   голосов, оценка 3.923 из 5


СОХРАНИТЬ ССЫЛКУ