- •Сборник задач по структурному программированию
- •Оглавление
- •Аннотация
- •Введение
- •Раздел 1
- •Работа с простыми типами данных
- •I a b c результат (можно/ нельзя)
- •Пример 1.1.1
- •Var hour,minute,n:longint;
- •Пример 1.1.2.
- •Var X,s,p:real;
- •I,n:integer;
- •Работа с символами, строками и текстом.
- •3 Слова длины 8 букв и т. Д.
- •Пример 1.2.1
- •Var s:string[80];
- •I,k:integer;
- •Разработка структурированных программ с использованием процедур и функций.
- •Пример 1.3.
- •Var I:word;
- •Var I:word;
- •X:integer;
- •I,m:word;
- •Работа с файлами разных типов.
- •Пример 1.4.
- •I: word;
- •Var X:integer;
- •Var I:word;
- •Var X:integer;
- •Inc(X);{Количество слов будет на 1 меньше!!}
- •Var p:boolean;
- •If p then
- •Var j:integer;
- •Var k,l:byte;
- •Динамические структуры данных. Списки.
- •Пример 1.5.
- •Var lp,pList,pStart : pEl_list;
- •I,oi,kol: integer; {переменные для работы с меню}
- •Insert_list(li);
- •Var I:integer;
- •Var I:integer;p:boolean;
- •Var k:char;
- •1: Begin dialog;
- •2: Begin dialog;
- •3: Begin dialog;
- •4: Begin
- •If noswap then begin
- •5: Begin
- •Var I:integer;
- •Vivod(2,2,25);
- •Решение графических задач
- •Пример 1_6.
- •Var dr,md:integer;
- •X,y,x1,y1,x2,x3,y2,y3,r:integer;
- •Var a:real;
- •Раздел 2
- •Работа с графическими объектами
- •Пример 2.1
- •X,y: real;
- •Var f1,f2:real;
- •Var gd,gm:integer;
- •Xb,xe,I,j:integer;
- •Работа с объектами- векторами
- •Пример 2.2
- •Var t:tPerson;
- •Interface
- •Implementation
- •I:integer;
- •I:integer;
- •I,j:integer;
- •Var m:integer;
- •Init(m);
- •Insert;
- •Работа с объектами - списками.
- •Пример 2.3
- •Interface
- •Implementation
- •Var Pcur1:t_el;
- •Var fname:ss;
- •Var s1:ss; p:byte; I:byte;
- •Var I:integer;
- •Interface
- •Implementation
- •Var Mylt:my_list;
- •Разработка объектов- таблиц.
- •Работа со структурами данных типа дерево.
- •Inf: integer;
- •Пример 2.5.
- •Interface
- •Implementation
- •Var newnode:pnode;
- •X,nl,nr:integer;
- •Var I: word;
- •Var q:pnode;
- •Разработка многомодульных задач.
- •Приложение.
- •Interface
- •Ik:word;{количество записей}
- •IEl:elmnt;
- •Var init_Ok:boolean;
- •Implementation
- •Var I:word;
- •Var m:word;
- •Var I:word;
- •If n then begin
- •Var I:word;
- •Var I: word;
- •Var I:word;{при выходе уничтожаем все списки}
- •Interface
- •Implementation
- •1: Begin
- •2: Begin
- •3: Begin
- •1: Begin
- •2: Begin
- •I:byte;
- •1: Begin
- •2: Begin
- •3: Begin
- •4: Begin
- •Var stop:boolean;
Var I:integer;
begin
{Текст основной программы, обеспечивающий решение сформулированной задачи}
kol:=5;
Textcolor(14);
Textbackground(0);
clrscr; dialog;
window(x1,y1,x1+l+4,y1+kol*2);
clrscr; textbackground(2);
for i:=1 to kol do
begin
window(x1+2,y1+i*2-1,x1+l+2,y1+i*2-1);
clrscr;
write(alter[i]);
end;
alt(x1,y1,25);
end;
begin
Vivod(2,2,25);
window(1,1,80,25);
textbackground(0);
textcolor(7);
clrscr;
end.
Решение графических задач

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

файл занести некоторую последовательность
из 8 натуральных чисел. Эта
последовательность задает число дней
в году, в которых преобладало
соответственно северное, северно-восточное,
восточное, юго-восточное, южное,
юго-западное, западное, северно-западное
направление ветра. Построить розу
ветров.Построить на экране переднюю панель дома и обеспечить возможность “зажигать” и “гасить ” свет в доме: включение и выключение света должно выполняться с клавиатуры, окна дома при зажженном и при погашенном свете окрашивается в разные цвета.
Получить на экране изображние действующих электронных часов, показывающих текущее время. Шаблоны используемых цифр должны соответствовать обычному для электронных часов девятисегментному шаблону ( наподобии шаблона на почтовых открытках).
Построить график функции Y= –6 *X2 +3*X. График должен быть нарисован в осях координат и область определения функции может быть заданной разработчиком.
Построить график функции Y= cos(X-1)+|X|. Обеспечить просмотр графика на любом диапазоне входных значений и изменение масштаба изображения зависимости.
Изобразить на экране область определения и построить графики следующих функций:
y=1/x;
y= (x+3)/(x-2);
y=(x+3)/(x-2);
Для каждой зависимости предусмотреть различные масштабы изображения графика на экране.
(а,б). Выполнить изображение в соответствии с шаблоном, приведенном на рисунке.


Для вычерчивания окружности, заданной параметрическими уравнениями x=r*cos(t), y=r*sin(t), tє[0,2), воспользоваться параметрическими уравнениями
x
=xc+r*(1-t2)/(1+t2)y=yc+r*(2*t)/(1+t2),tє[0,1).
У
казанное
изменение параметра соответствует
дуге окружности от 0 до/2.
Полная окружность может быть получена
симметричным отображением каждой
полученной точки относительно осей 0X
и 0Y
и начала координат в предположении,
что начало координат совмещено с центром
окружности. (рисунок). В файл занесены
тройки значений xc,
yc
и r.
Построить окружности с центром в точке
(xc.
, yc)
и радиусом r.
Построить спираль вокруг начала кооординат с n витками и внешним радиусом r; начальное направление спирали образует с осью 0X угол . Параметрическое представление спирали x= r*cos(t), y=r*sin(t), t 2n, r=t/2.
Построить изображения квадратов с внутренними делениями. Количество линий деления может быть любым и вводится по запросу с клавиатуры. Обеспечить раскраску всех соседних ячеек другим цветом. Варианты рисунков: а),б), в), г), д), е), ж), з), и).









Задается некоторый положительный радиус окружности. Построить фигуры, образованные восемью точками, лежащими на окружности и являющимися вершинами правильного многоугольика, вписанного в эту окружность и соединенными между собой разными линиями.
Д



аны
координаты трех различных точек:x1,
y1
, x2
, y2,
x3,
y3.
Построить отрезок с координатами
концов (x1,
y1
) и (x2
, y2).
Через точку (x3,
y3)
провести отрезок параллельный и
равный по длине первому отрезку, но
таким образом, чтобы точка (x3,
y3)
делила искомый отрезок пополам.
Количество задаваемых наборов точек
- произвольное.З
адаются
натуральные числаxc.,yc,
h,
w,
x,
y.
Построить прямоугольник с центром в
точке (xc.
, yc),
высотой h
и шириной w.
Провести прямую через точки xc.,yc
и x,
y
и отметить точка пресечения прямой
и стороны прямоугольника. З

адаются
натуральные числаxc.,yc,
h,
w,
x,
y.
Построить прямоугольник с центром в
точке (xc.
, yc),
высотой h
и шириной w.
Провести невидимую прямую через
точки xc.,yc
и x,
y,
отметив точку пересечения прямой и
стороны прямоугольника. Кроме этого
построить варианты прямых, пересекающихся
с прямоугольником в соответствии с
изображениями на рисунке.Даны натуральные числа xc.,yc, r, x, y. Построить окружность с центром в точке (xc.,yc) и радиусом r , а также определить координаты точки пересечения прямой, проходящей через точку x, y и координаты центра окружности. Построить отрезок с координатами концов, отметив точку пересечения прямой и окружности.
Д

аны
натуральные числаxc.,yc,
r,
x,
y,
h,
w.
Построить окружность с радиусом r
и центром xc.,yc
и прямоугольник с центром в точке x,
y,
высотой h
и шириной w.
Соединить отрезком центры окружности
и прямоугольника. Изобразить прямую
другим цветом. Варианты изображения
самой прямой представлены на рисунке.Даны координаты левого верхнего угла и правого нижнего угла двух прямоугольников. Проверить пересекаются ли прямоугольники. Если они пересекаются, то выделить цветом их общую часть. Проверку пересечения можно выполнить проверкой следующих соотношений длин прямоугольников: l=max(x1,x3),r=min(x2, x4), s=max(y2, y4), t=min(y1,y3). Прямоугольники будут пересекаться, если выполняются неравенства: l< r и s< t. Исходя из этих неравенств, координаты вершин прямоугольника пресечения находятся в точках (l,t)и(r,s).
Использовать для изображения прямой метод резиновой нити. Метод заключается в следующем: фиксируется один конец линии, указатель-курсор помещается на второй конец нити и за этот конец прямая вытягивается в любом направлении. Изменять скорость перемещения конца нити.


Используя метод резиновой нити построить:
резиновый прямоугольник
резиновый треугольник.
При построении этих фигур любая из вершин может быть помечена как неподвижная и, соответственно, любая другая вершина позволяет вытягивать прямоугольник и треугольник.(рисунки а,б).
Нарисовать окружность на экране и обеспечить управление изменением ее размеров и положения с помощью клавиш: < - уменьшение размера окружности на заданное количество пикселей, > - увеличение размера окружности, а стрелки , , , - обеспечивают перемещение окружности по экрану. Координаты центра окружности и ее радиус задаются. При достижении края экрана все преобразования окружности должны блокироваться.
Нарисовать произвольный прямоугольник. Обеспечить управление его перемещением по экрану с помощью стрелок , , , . Клавиши < и > должны обеспечить соответственное изменение ширины прямоугольника , а клавиши + и - - увеличение и уменьшение высоты прямоугольника. При достижении любого края экрана все преобразования должны блокироваться.
Обеспечить перемещение по экрану точки точно по горизонтали экрана. Точку изобразить окружностью малого радиуса и цветом, отличным от цвета фона. При достижении точкой края экрана должна из этого края появляться следующая точка. Строка, в которой появляется новая точка, выбирается с помощью датчика случайных чисел. Цвет каждой новой точки выбирается также случайным образом.
Изобразить на экране точку, которая движется по окружности. управление скоростью движения точки обеспечивается клавишами < (скорость уменьшается) и >(скорость увеличивается). Цвет движущейся точки должен отличаться от цвета окружности.
Изобразить на экране отрезок прямой, который вращается в плоскости экрана следующим образом:
вокруг своей середины;
вокруг любого из концов;
вокруг точки, делящей прямую в отношении 1:n.
Число n задается в диалоге при определении режима вращения.
Изобразить на экране приближающийся издали шар. Изменять скорость приближения шара, а также точку, из которой начинает шар движение.
Получить изображение “Круги на воде”. Использовать семь концентрических окружностей. Радиус каждой из окружностей отличается от ближайшей окружности на 7 пикселей. Движение создается последовательной сменой цветов всех окружностей, начиная с внутренней окружности и заканчивая внешней. Процесс смены цветов повторяется любое число раз.
