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


 
В этот день много лет назад...
27 декабря. В 1959 году (66 лет назад) - Эрзинджан, Сивас и Самсун, Турция. Свыше 50000 человек погибают во время землетрясения, обрушившегося на провинции Турции Эрзинджан, Сивас и Самсун. Сотни тысяч людей получают ранения. Погибло более 50000 жителей провинций Эрзинджан, Сивас и Самсун во время самого сильного для отравы землетрясения, разразившегося в 2 часа 27 декабря 1939. Сотни тысяч людей получили ранения и столько же остались без крова. Но после того, как землетрясение прекратилось, люди продолжали гибнуть, потому что на страну обрушились жестокие снежные бури. Наиболее сильно от землетрясения пострадал город Эрзинджан, который практически весь лежал в руинах. Суровая зимняя погода сыграла немаловажную роль в увеличении числа жертв землетрясения. Чтобы защититься от морозов, достигавших 30 градусов, жители насыпали на крыши своих домов камни и глину. Когда прошла первая волна землетрясения, под тяжестью наваленных на них камней, крыши рухнули прямо на спящих людей. Город перенес семь толчков, превративших его в кладбище. Кроме тюрьмы, не уцелело ни одно здание. Большая часть государственных чиновников погибла. Необычный акт героизма проявили десятки заключенных, среди которых были и осужденные за убийство. Они помогли откопать более 1000 засыпанных развалинами человек. Когда с этим управились, приступили к сооружению убежищ, делились с обездоленными людьми теплой одеждой, часто из своих собственных запасов, жгли костры, спасавшие людей от снежных буранов. Кроме того, боролись с одичавшими собаками, которые наводнили город, поедая мертвых и раненых. Хотя сейсмологи убеждали в отсутствии какой-либо связи, в течение последующих трех недель по всему земному шару прокатилась серия землетрясений. Тем временем Эрзинджан и еще одна часть Турции продолжали сотрясаться от повторяющихся толчков. Незначительные землетрясения произошли в Лос-анджелесе, Больсне (окрестности Рима), Никарагуа, Сальвадоре и Гондурасе. За этот период в Южно-африканском Ранте было зарегистрировано не менее 25 толчков.
 
 

Turbo Pascal Examples.
Детская игра "Считалка"

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


 
Детская игра "Считалка"
В некотором файле находится список игроков. Необходимо выбрать ведущего игрока. Для этого выбирается произвольное число Н, игроки встают в круг и выкидывают из круга каждого Н-того игрока, пока не останется лишь один человек. Написать программу, печатающую вышедших в процессе рассчета игроков. Необходимо использовать динамические структуры данных (связанные списки).


program shitalka;
const nOut = 5;
type
  ptrNameList = ^nameList;
  nameList = record
    name:String;
    next:ptrNameList;
    end;
var firstElement,element:ptrNameList;
    f:text;
    nameString:String;
    i,nInList:byte;

procedure deleteElement(element2Del:ptrNameList);
var prevElement:ptrNameList;
    i:word;
  begin

  { find the element that is just before element2Del }
  prevElement := firstElement; i:=0;
  while ((prevElement^.next <> element2Del) and (i<nInList)) do
    begin
    prevElement := prevElement^.next; inc(i);
    end;

  { remove element2Del from list }
  prevElement^.next := element2Del^.next;
  if (element2Del=firstElement) then
    firstElement:=element2Del^.next;
  { print element2Del }
  writeln;writeln('removed: '+element2Del^.name);
  dispose(element2Del);
  dec(nInList);
  end;

procedure printList;
var element,lastEl:ptrNameList;
  k:byte;
  begin
  element := firstElement; k:=0;
  while (k<nInList) do
    begin
    write(element^.name+', '); inc(k);
    element := element^.next;
    end;
  {writeln('end of list');}
  end;


begin

{ reading list }

firstElement := nil;
assign(f,'list.txt');
{$I-}
reset(f); nInList:=0;
{$I+}
if (IOResult>0) then
  begin
  writeln('File list.txt not found.');halt;
  end;
while not eof(f) do
  begin
  readln(f,nameString);
  if (firstElement = nil) then
    begin
    new(element);
    firstElement := element;
    end
  else
    begin
    new(element^.next);
    element := element^.next;
    end; { end if }
  element^.name := nameString;
  element^.next := firstElement;
  inc(nInList);
  end; { end while }
close(f);

{ printing initial list }

element := firstElement;


write('Initial list:');
printList;

{ shchitalka start }

element := firstElement;

while (element^.next<>element) do
  begin
  { element := firstElement; } { discomment this statement if you want to start fromt the first }
  i:=0;
  while ((element^.next<>element) and (i<nOut-1)) do
    begin
    element := element^.next;
    inc(i);
    end;
  if (element^.next<>element) then
    begin
    deleteElement(element);
    write('Rest: ');
    printList;
    element := element^.next;
    end;
  end;

{ end of list reached }
end.




 

 

 

 

 

 



HOME