Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Помогите плиз переписать код с MODULA2 (паскаль) на СИ

Автор: zam
Дата сообщения: 16.06.2003 01:03
Помогите переписать этот исходник с модулы-2 (практически паскаль) на СИ
В паскале я не разбираюсь, поэтому некоторые конструкции отсюда непоняты. Record полагаю структура в си...могу и ошибаться.

ПРограмма строит идеально-сбалансированное дерево и выводит его на экран, инфу берет из файла (в конце я написал)

Код:
MODULE BuildTree
FROM InOut IMPORT OpenInput, CloseInput
ReadInt, WriteInt, WriteString, WriteLn;
FROM Storage IMPORT ALLOCATE;

TYPE Ptr = POINTER TO Node;

Node = RECORD key: INTEGER;
left, right: Ptr
END

VAR n: INTEGER; root: Ptr;

PROCEDURE tree(n: INTEGER): Ptr;
VAR newnode: Ptr;
x, nl, nr: INTEGER;

BEGIN (* построение идеально сбалансированного дерева с n-вершинами *)

IF n = 0 THEN newnode := NIL
ELSE nl := n DIV 2; nr := n-nl-1;
ReadInt(x); ALLOCATE(newnode, SIZE(Node));
WITH newnode^ DO
key := x; left := tree(nl); right := tree(nr);
END
END
RETURN newnode
END tree;

PROCEDURE PrintTree(t: Ptr; h: INTEGER);
VAR i: INTEGER;
BEGIN (* печать дерева t с отступом h *)
IF t # NIL THEN
WITH t^ DO
PrintTree(left, h+1);
FOR i := 1 TO h DO WriteString(" ") END;
WriteInt(key, 6); WriteLn;
PrintTree(right, h+1);
END
END
END PrintTree;

BEGIN (* первое целое - число вершин *)
OpenInput("TEXT"); ReadInt(n);
root := tree(n);
PrintTree(root, 0); CloseInput
END BuildTree.

Страницы: 1

Предыдущая тема: DBGridEh query и скрытие записей


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.