Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2007, 15:44   #1
student523
Новичок
Джуниор
 
Регистрация: 17.12.2007
Сообщений: 1
По умолчанию Помогите решите олимпиадные задачи, пожалуйста!!!

Олимиадные задачи 89/90 года на Pascal (Казань, областной уровень)
1. Задано прямоугольное поле m*n. Клетки этого поля случайно раскрашены в белый и черный цвет. Составить алгоритм, обнаруживающий все проходы по черным клеткам с одной стороны поля на противоположную. Ходы разрешается делать только по вертикали или горизонтали и только по клеткам черного цвета.
2. Считалка. по кругу расположены n человек. Начиная с некоторого из них, считаем по кругу, каждый m человек выбывает, затем круг смыкается. Например, для n=8 и m=4 выбывают в следующем порядке 4,8,5,2,1,3,7,6. Написать алгоритм, который печатает порядок выбывания для различных m и n.
3. Треугольник Паскаля. Составить программу, которая строит m>5 строк. Для 5 строк треугольник Паскаля выглядит так:
1
1 1
1 2 1
1 4 6 4 1
4. На экране даны 2 точки с произвольными координатами. Составить программу, которая строит между ними прямую линию, не используя при этом графические функции LINE, DRAW и т. п. Строить изображение точками.
student523 вне форума Ответить с цитированием
Старый 17.12.2007, 17:01   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Четвертая задача
Код:
uses graph;
var gd,gm: Integer;

procedure _Line(x1,y1,x2,y2: integer);
var
  x,y,h: integer;
  k: double;
begin
  x:=0; y:=0;
  h:=1; {шаг между точками по X}
  k:=(y2-y1)/(x2-x1); {угловой коэффициент линии}
  while (x1+x) <= x2 do
    begin
      PutPixel(x1+x,y1+y,white);
      x:=x+h; y:=round(k*x);
    end;
end;

begin
 gd:=Detect;
 InitGraph(gd,gm,'c:\bp\bgi');
 if GraphResult <> grOk then halt;
 _Line(50,50,400,200);
 readln;
 CloseGraph;
end.
При вызове роцедуры должно быть: x2>x1, y2>y1
_Dmitry вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста кто нибудь решите две задачи. Filin Паскаль, Turbo Pascal, PascalABC.NET 6 21.01.2008 14:29
Решите пожалуйста две задачи. Bagsi Помощь студентам 5 26.10.2007 10:46