HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail


 
 

Turbo Pascal Examples. Stack example.

Графика:
Построение графика функции
Прыгающий по экрану мячик.
Качание маятника.
Вложенные цветные круги.
Броуновское движение. Использование объектов.
Матрицы и массивы:
Сортировка элементов массива.
Удаление одинаковых элементов.
Простой пример на поворот матрицы.
Сортировка методом Шелла. +функции измерения временных интервалов.
Проверка выпуклости многоугольника.
Перемоножение матриц
Вычисление определителя матрицы. Рекурсия.
Нахождение обратной матрицы.
Задача об автостоянке.
Рекурсия. Подземелье сокровищ.
Численные методы:
Задачка на определение угла между стрелками часов.
Проверка на принадлежность точки многоугольнику.
Нахождение точки пересечения двух отрезков на плоскости.
Сортировка методом Шелла. +функции измерения временных интервалов.
Сортировка методом "пузырька". Пример на динамические структуры данных. Связанные списки.
Нахождение корня функции методом половинного деления.
Вычисление арккосинуса
Нахождение суммы цифр натурального числа.
Работа с фалами:
Рекурсивное сканирование директорий.
Работа со строками:
Работа со словами в предложении с разделителями.
Простейший синтаксический анализатор для распознавания и вычисления многчлена.
Синтаксический анализатор для распознавания и вычисления многчлена.
Работа со строками: смена кодировки, удаление тегов из HTML текста, обработка
Переименование файлов из кириллицы в латиницу.
Выдача контекстной подсказки.
Частотный словарь символов.
Подсчет повторяющихся символов в строке.
Ссылочные переменные:
Моделирование стека.
Пасьянс "Косынка".
Игры:
Пасьянс "Косынка".
Игра "Питон"
Игра "Анацефал". Пример использования объектов.
Игра "Минное поле"
Большие проекты:
Электронная картотека (без исходника)


 
Stack example
Сформировать стек. Анализируя стек, сформировать списки:
а) букв латинского алфавита;
б) литер цифр.


type
  stack_p = ^stack_t;
  stack_t = record
    ch :char;
    next:stack_p;
    end;

var stack_root,lat_list_root,num_list_root,work:stack_p;
    example:String;
    i:byte;

procedure addToStack(var root:stack_p;uch:char);
var w:stack_p;
  begin
  if (root = nil) then
    begin
    new(w);
    root := w;
    end
  else
    begin
    w := root;
    while w^.next <> nil do
      w:=w^.next;
    new(w^.next);
    w:=w^.next;
    end;
  w^.ch := uch;
  w^.next := nil;
  end; { addToStack }

procedure printStack(root:stack_p;title:String);
var w:stack_p;
  begin
    writeln(title);
    w := root;
    while w <> nil do
      begin
      write(w^.ch,',');
      w:=w^.next;
      end;
    writeln;
  end; { printStack }

  begin { main }
  example := 'This is an example. The 1st program has 234 lines.';


  { form stack }

  stack_root:=nil;
  for i:=1 to length(example) do
    addToStack(stack_root,example[i]);

  if (stack_root=nil) then
    begin
    writeln('The stack is empty.');
    halt(0);
    end;

  printStack(stack_root,'Original Stack');

  lat_list_root:=nil;
  num_list_root:=nil;

  work:= stack_root;
  while (work <> nil) do
    begin
    if (pos(work^.ch,'0123456789') >0)
      then addToStack(num_list_root,work^.ch)
      else addToStack(lat_list_root,work^.ch);
    work:=work^.next;
    end;
  printStack(lat_list_root,'Latin letters list');
  printStack(num_list_root,'Digits list');

  end.


 

 

 

 

 

 

 


HOME