В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
mymrina05
mymrina05
20.08.2022 08:54 •  Информатика

переделать программу на Паскале Разработать программу, реализующую следующий набор операций с двоичными деревьями поиска:
1. поиск вершины с заданным значением ключа с выводом счетчика появлений данного ключа.
2. добавление новой вершины в соответствии со значением ее ключа или увеличение счетчика числа появлений.
3. построчный вывод дерева в наглядном виде с обратно-симметричного обхода.
Все действия оформляются как подпрограммы.
TYPE
pNode = ^dNode;
dNode = RECORD
Inf: INTEGER;
Left,Right: pNode
END;
pStack = ^Item;
Item = RECORD
Inf: pNode;
next: pStack;
END;
VAR
Count, N, Num: INTEGER;
pRoot : pNode;

PROCEDURE Privetstvie();
BEGIN
WRITELN('Выберите действие:');
WRITELN('1-Построить дерево');
WRITELN('2-Обход в прямом направлении');
WRITELN('3-Обход в симметричном направлении');
WRITELN('4-Обход в обратно-симметричном направлении');
WRITELN('5-Итеративный Обход в симметричном направлении');
WRITELN('0-Выхода');
END;

PROCEDURE ShowOnward(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
WRITELN('':4*L, pCur^.Inf);
ShowOnward(pCur^.Left, l+1);
ShowOnward(pCur^.Right, l+1)
END
END;

PROCEDURE ShowSymmetric(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ShowSymmetric(pCur^.Left, l+1);
WRITELN('':4*L, pCur^.Inf);
ShowSymmetric(pCur^.Right, l+1)
END
END;

PROCEDURE ShowBackSymmetric(VAR pCur: pNode; L: INTEGER);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ShowBackSymmetric(pCur^.Right, L+1);
WRITELN('':4*L, pCur^.Inf);
ShowBackSymmetric(pCur^.Left, L+1)
END
END;

PROCEDURE Push(var s : pStack; Value : pNode);
var p : pStack;
BEGIN
NEW(p);
p^.next := s;
p^.Inf := Value;
s := p;
END;

PROCEDURE Pop(var s : pStack; var Value : pNode);
VAR
p : pStack;
BEGIN
IF s = NIL
THEN
Value := NIL
ELSE
BEGIN
Value := s^.Inf;
p := s;
s := s^.next;
DISPOSE(p);
END;
END;

PROCEDURE IterativeSymmetric(pCur: pNode);
VAR
s : pStack;
BEGIN
s := NIL;
REPEAT
WHILE pCur<> NIL
DO
BEGIN
Push(s, pCur);
pCur := pCur^.Left;
END;
IF s <> NIL
THEN
BEGIN
Pop(s, pCur);
WRITELN(pCur^.Inf);
pCur := pCur^.Right;
END;
UNTIL (s = NIL) AND (pCur = NIL);
END;

PROCEDURE ClearTree(pCur: pNode);
BEGIN
IF pCur <> NIL
THEN
BEGIN
ClearTree(pCur^.Left);
ClearTree(pCur^.Right);
DISPOSE(pCur);
Count := Count - 1;
IF Count = 0
THEN
pCur := NIL
END
END;

PROCEDURE CreateNode(var p : pNode; Data : INTEGER);
BEGIN
NEW(p);
p^.Inf := Data;
p^.Left := NIL;
p^.Right := NIL
END;

FUNCTION AddNode(var Root : pNode; Data : INTEGER) : BOOLEAN;
BEGIN
Result := TRUE;
IF Root = NIL
THEN
CreateNode(Root, Data)
ELSE
IF Root^.Inf < Data
THEN Result := AddNode(Root^.Right, Data)
ELSE
IF Root^.Inf > Data
THEN
Result := AddNode(Root^.Left, Data)
ELSE
Result := FALSE
END;

PROCEDURE AddNodes(VAR pCur: pNode; Count: INTEGER);
VAR
i, n : Integer;
BEGIN
RANDOMIZE;
FOR i := 1 TO Count
DO
REPEAT
n := Random(99);
UNTIL AddNode(pCur, n)
END;

BEGIN
pRoot := NIL;
Count := 0;
N := 6;
WHILE N <> 0
DO
BEGIN
Privetstvie();
READLN(N);
CASE N OF
0: BEGIN WRITELN('Удачи!До новых встреч.'); BREAK END;
1: BEGIN WRITELN('Число вершин дерева = '); READLN(Num); ClearTree(pRoot);
AddNodes(pRoot, Num); WRITELN('Дерево Создано') END;
2: IF pRoot <> NIL
THEN
ShowOnward(pRoot, 0)
ELSE
WRITELN('Дерево пустое');
3: IF pRoot <> NIL
THEN
ShowSymmetric(pRoot,0)
ELSE
WRITELN('Дерево пустое');
4: IF pRoot <> NIL
THEN
ShowBackSymmetric(pRoot, 0)
ELSE
WRITELN('Дерево пустое');
5: IF pRoot <> NIL
THEN
IterativeSymmetric(pRoot)
ELSE
WRITELN('Дерево пустое');
ELSE BEGIN WRITELN('Введенные данные неверны,повторите ввод'); N := 6 END
END
END
END.

Показать ответ
Ответ:
bladone439
bladone439
29.02.2020 01:46

Этап 1

1. Разработка концепции:

возраст пользователя.

вид игры: развлекающая, развивающая, обучающая, комплексная.

2. Разработка адресных требований к игре:

к сценарию.

к игровой среде.

к графике игры.

3. Написание сценария:

создание сюжетной канвы с определением персонажей игры.

прописывание диалогов.

внесение в канву сценария игровых моментов (развлекающих, обучающих, развивающих).

прописывание речёвок и моментов ожидания действий пользователя.

проверка сценария на: удобство управления игрой, удобство перемещения в игровом поле, соответствие концепции и требованиям к данной игре; взаимное соответствие элементов сценария друг другу.

4. Разработка технических требований к игре и подготовка тех.задания.

5. Взаимодействие с разработчиками технической части игры:

передача сценария в разработку.

разработка визуальных образов персонажей и фонов игры.

стыковка пожеланий заказчика игры с возможностями разработчиков по организации игрового Озвучка персонажей, если в игре имеются говорящие персонажи.

6. Тестовая версия игры.

7. Подготовка второго этапа - итоги предварительной работы, обобщение опыта, план работы по доработке игры.

0,0(0 оценок)
Ответ:
vika3v
vika3v
16.06.2020 09:13

#include <iostream>

using namespace ::std;

int main()

{

   setlocale(LC_CTYPE , "rus");

   

   int n, i, j = 0, k = 0;

   double s = 0;

   cout << "Введите количество элементов: \n";

   cin >> n;

   float x;

   float *massiv = new float[n];

   if (!massiv)

   {

       cout << "Сбой программы!\n";

       system("pause");

        return 0;

   }

   cout << "Введите массив с " << ' ' << n << ' ' << "элементов\n";

   for (i = 0; i < n; i++)

       cin >> *(massiv + i);

   cout << "Заданный массив: " << endl;

   for (int i = 0; i < n; i++)

       

       cout << *(massiv + i) << ' ' << endl;

 

   for (i = 0; i<n; i++)

   {

       if (massiv[i]>0)

           k++;

   }

   cout << " Количество положительных элементов = " << k << '\n';

 

 

   for (i = 0; i<n; i++)

   {

       if (massiv[i] == 0) {

           j = massiv[i];

           x = i;

       }

   }

 

   for (i = x; i<n; i++)

       s += massiv[i];

 

   cout << "Сумма =" << s;

   float *massiv2 = new float[n];

   if (!massiv2)

   {

       cout << "Сбой программы !\n";

       system("pause");

       return 0;

   }

   for (i = 0; i < n; i++)

       if (massiv[i] <= 1)

       {

           massiv2[j] = massiv[i];

           j++;

       }

 

   for (i = 0; i < n; i++)

       if (fabs(massiv[i]) > 1)

       {

           massiv2[j] = massiv[i];

           j++;

       }

   cout << endl << "Отсортированный массив: " << endl;

   for (int j = 0; j < n; j++)

       cout << '\n' << massiv2[j] << ' ';

 

   delete[] massiv;

   delete[] massiv2;

   system("pause");

   return 0;

}

В работо не сомневайся.

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота