При работе в среде delphi или ей подобной все необходимые альтернативы меню можно формировать из стандатных меток, кнопок, меню и списков. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

При работе в среде delphi или ей подобной все необходимые альтернативы меню можно формировать из стандатных меток, кнопок, меню и списков.



 

1.5.1. Вводится произвольный текст из неизвестного количества строк. Конец текста отмечается точкой. Представить текст в виде списка строк, длина каждой строки в элементе списка не превышает 30 символов. Более длины строки в список не заносить. Определить число строк в тексте вообще и число строк для списка, обеспечить перестановку i-ой и j - ой строк.

1.5.2. Вводится последовательность целых чисел и записывается в памяти в виде линейного списка. Определить среднее арифметическое элементов списка, заменить все вхождения некоторого элемента а1 на элемент а2. Определить число этих замен для каждого варианта списка.

1.5.3. Вводится некоторая последовательность букв русского алфавита и 1записывается в памяти в виде линейного списка. Определить упорядочена ли последовательность по алфавиту, заменить выбранную букву K-ую на Q-ую, поменять местами первую и последнюю буквы.

1.5.4. Вводится последовательность слов и записывается в памяти в виде линейного списка. Определить количество слов в списке, определить количество слов, начинающихся и оканчивающихся на одну букву.

1.5.5. В файл занести сведения о веществах: название, удельный вес, проводимость. Прочитать из файла эти сведения и разместить в памяти в виде линейного списка. Создать списки из проводников, изоляторов, полупроводников.

1.5.6. Вводится последовательность чисел и записывается в памяти в виде линейного списка. Определить число элементов в списке, не превышающих заданного числа. Вывести исходный список элементов и результат обработки списка. Сохранить список в файле.

1.5.7. В память в виде линейного списка заносятся сведения о студентах и их оценках по двум предметам. Все сведения сохраняются в файле. Создать список из отличников. Вывести исходный и результирующий списки на экран.

1.5.8. Задается некоторая последовательность чисел. В памяти последовательность хранится в виде списка. Найти в списке элементов наибольший элемент и поменять его с L-ым элементом последовательности. Последовательность сохраняется в файле. Результаты обработки и исходный список вывести на экран.

1.5.9. В файл записать некоторую последовательность из слов S неизвестной длины. Создать линейный список из слов, считанных из файла. Сравнить первое и последнее слова. Если они будут равны, то удалить и первое и последнее слова. Вывести исходный список и результат обработки, а также найденные слова. Новый список также сохранить в файле.

1.5.10. В файл занести сведения об автомобилях: фамилия владельца, марка автомобиля, номер автомобиля. Прочитать из файла и записать в виде линейного списка все имеющиеся сведения. По заданной марке автомобиля найти в списке всех владельцев этой марки. Результаты поисков вывести на экран.

1.5.11. Из файла вводится последовательность вещественных чисел и записывается в виде линейного списка. Определить длину списка. Удалить из списка элементы с i - го по i+5. Вывести исходный список и результирующий.

1.5.12. В файл заносится последовательность слов и записывается в памяти при чтении из файла в виде линейного списка. Обеспечить перестановку слов в списке в обратном порядке. Вывести исходный список и преобразованный. В файле сохраняется исходный вид последовательности.

1.5.13. В файл записывается последовательность целых чисел. Прочитать последовательность из файла и создать стек в памяти из этих чисел таким образом, чтобы на вершине стека было самое большое число. Удалить из стека все отрицательные элементы. Вывести исходный и результирующий стеки на экран.

1.5.14. В файл заносятся сведения о жителях некоторой улицы: фамилия, адрес, год рождения. Все сведения записываются в памяти в виде линейного списка. Вводится некоторая текущая дата. В списке сведений найти всех жителей, имеющих право участвовать в выборах (возраст >=18). Список полученных сведений вывести на экран.

1.5.15. В файл занести сведения об абонентах телефонной сети: фамилия, адрес, номер телефона. Прочитать все сведения в линейный список. Удалить из списка убывшего абонента, внести в список данные о новом абоненте, изменить данные об абоненте. Выводить преобразованный и исходный списки на экран.

1.5.16. Данные о фондах библиотеки занести в файл в формате: автор книги, название книги, шифр издания (тоже строка), год издания, количество книг данного названия. Из всех сведений создать список книг одного автора. Вывести полученный список на экран. Обеспечить внесение в полученный список новых сведений и исправление старых сведений.

1.5.17. Вводится последовательность натуральных чисел и создается из нее список. Длина последовательности n. Обеспечить с помощью списка вычисление сумм и произведений вида:

Ø x1 *xn+ x2*xn-1..............xn*x1

Ø (x1 + xn) * (x2 + xn-1)...........*(xn + x1)

1.5.18. В файл записывается последовательность целых чисел. Создается линейный список из считанной последовательности. Из исходного списка создать список всех одинаковых элементов списка. Вывести исходный список и список выбранных элементов на экран.

1.5.19. В файл записывается некоторая последовательность целых чисел. Прочитать последовательность и записать в память в виде линейного списка. Преобразовать список таким образом, чтобы в начале списка были только отрицательные числа, а затем только положительные. Порядок следования чисел по сравнению с исходной последовательностью не должен быть изменен. Вывести исходную последовательность и результат преобразования.

1.5.20. В файл занести последовательность слов. Прочитать последовательность слов в список. Если количество слов четно, то тогда создать список из 2-ого, 4-ого и т.д. слов. Если же последовательность содержит нечетное количество слов, тогда создается список из 1-ого, 3-ого и т.д. слов. Обеспечить вывод на экран исходной последовательности слов и результатов обработки этой последовательности.

1.5.21. В файл надо записать некоторый текст. Каждое предложение текста заканчивается точкой. Составить список из предложений текста, удалив в каждом предложении лишние пробелы (более одного). Записать список в файл. Вывести на экран исходный и преобразованный тексты.

1.5.22. В файле создать последовательность сведений о сотрудниках некоторой организации. Формат сведений: фамилия, имя. отчество, должность, оклад. Создать в памяти упорядоченный список сотрудников в виде стека. На вершине должен находиться сотрудник с самой низкой заработной платой.

1.5.23. Создается текстовый файл из слов разной длины. Прочитать из файла слова в список типа очереди. В начале очереди должно стоять самое длинное слово, а в конце - самое короткое слово. Обеспечить просмотр списка слов, удаление любого выбранного слова, вставка слова на правильное место по упорядоченности.

1.5.24. В файл заносится неупорядоченный список абонентов телефонной сети в формате: фамилия, имя, отчество, адрес, номер телефона. Создать кольцевой список из этих сведений. Обеспечить вывод сведений обо всех однофамильцах с их номерами телефонов, исправление сведений (удаление, вставку нового абонента, исправление старых сведений).

1.5.25. В файле записать сведения о результатах выступлений спортсменов по некоторым соревнованиям, например, стрельбе из лука. Каждый судья записывает свои сведения в формате: фамилия спортсмена, пять оценок за каждую из стрельб. При обработке сведений из каждых пяти оценок отбрасывается самая высокая и самая низкие оценки и из остальных берется средняя оценка. Вывести список типа стека по результатам соревнований в соответствии с набранными баллами. На вершине стека должен быть спортсмен с наивысшими результатами. Обеспечить исправление оценок и количества участников соревнований.

1.5.26. Последовательность целых чисел заносится в файл. Прочитать из файла последовательность и записать в память в виде линейного списка. Найти сумму элементов списка с конца и с начала списка. Проверить решение на произвольном количестве последовательностей. Вывести на экран последовательность и результаты вычислений.

1.5.27. В файл внести сведения о владельцах автомобилей в формате: фамилия, имя, отчество владельца автомобиля, марка автомобиля, год выпуска, номер автомобиля. Разработать список типа очереди, где в начале очереди стоят владельцы самых старых автомобилей. Сформировать списки по владельцам разных марок автомобилей. Обеспечить исправление сведений в списках.

1.5.28. В файл занести сведения об игроках футбольной команды. Формат сведений: фамилия, имя, отчество игрока, количество “сыгранных” матчей, категория игрока. Прочитать сведения о команде в стек, на вершине которого стоят спортсмены с наименьшим количеством сыгранных матчей. Обеспечить коррекцию сведений по запросу пользователя. На экран вывести результирующий список.

1.5.29. В файл занести сведения о заработной плате сотрудников некоторой организации в формате: номер отдела, должность, ставка, фамилия, имя, отчество. Создать в памяти кольцевой список из сотрудников организации. Список упорядочить по фамилиям. Обеспечить исправление сведений о сотрудниках, в том числе и изменение числа сотрудников.

1.5.30. В текстовый файл записываются слова, разделяемые пробелами, эапятыми. Сформировать из слов файла списки по длине слов (две буквы в слове, три буквы в слове и т.д.). Считаем, что слов, содержащих более 10 букв в тексте нет. Вывести по запросу пользователя любой из списков. Обеспечить изменение данных в тексте и исправление списков.

1.5.31. Информация об очереди запросов на исполнение программ хранится в списке в следующем формате:

имя программы адрес устройства, на котором находится программа Следующий элемент очереди

Упорядочить очередь программ по адресам устройств. Обеспечить вывод на экран сведений о порядке выполнения программ по их наименованиям на основании указаний очередности в списке.. Исходные сведения заносятся в файл в произвольном порядке.

ПРИМЕР 1.5.

program Number_1_5;

uses Crt;

{Создать список студентов и найти среди них однофамильцев}

const {список альтернатив для работы меню}

alter:array[1..5] of string[30]=(

'1.Создать файл',

'2.Создать список',

'3.Сортировка ',

'4.Вывод однофамильцев',

'5.Выход из программы');

Type

list_d = record { Структура- запись }

Title: string[20]; { Фамилия }

Nm,Pt: string[15]; { Имя,отчество }

Number: integer; { Номер по порядку }

end;

ff=file of list_d;{список для сохранения исходных данных в файле, чтобы проще было отлаживать и проверять решение}

pEl_list = ^list; { Указатель на структуру - список }

list = record { Структура - список }

li: list_d;

next: pEl_list; {Ссылка на следующий элемент списка}

end;

var lp,pList,pStart: pEl_list;

f:ff;

li:list_d;

noswap: boolean;{Для проверки выполнения сортировки}

ch: char;{Для самого простого варианта чтения символов}

i,oi,kol: integer; {переменные для работы с меню}

procedure init;

Begin

pStart:=nil;

end;

procedure DeleteList;

{Уничтожаем список для того, чтобы освободить память при сохранении списка, допустим, в файле}

Begin

lp:=pStart;

while lp <> nil do begin

pList:=lp;

Dispose(pList); {Уничтожается очередной элемент списка}

lp:= lp^.Next; {Перемещаемся по списку}

end;

end; { DeleteList }

{-------------------------------}

procedure Insert_list(el: list_d);

begin { Элемент вставляется следующим в списке}

new(pList);

if pStart =nil then

Begin

with pList^ do

Begin

li.Title:=el.title;

li. Nm:=el.Nm;

li.Pt:=el.Pt;

li.Number:=el.Number;

next:=nil;

end;

pStart:=pList;{Запоминаем начало списка}

lp:=pList; {А это текущий элемент списка, при одном элементе в списке - это первый элемент списка}

End

Else

Begin

lp^.next:=pList;

with pList^ do

Begin

li.Title:=el.title;

li. Nm:=el.Nm;

li.Pt:=el.Pt;

li.Number:=el.Number;

next:=nil;

end;

lp:=pList;{Движение по списку обеспечено}

end;

end; { InsertEl }

{-------------------------------}

procedure SaveBase_in_file;

{ Сохранение введенных данных в файле позволяет не вводить одну и туже информацию}

Var

FileName: string[12];

k:char;

Begin

FileName:= 'Wnd.bas';

Assign(f, FileName);

Rewrite(f);

Repeat

With li do

Begin

write(' Вводите список: фамилия ');

Readln(title);

write(' Имя ');

readln(Nm);

write(' Отчество ');

readln(Pt);

write(' Номер ');

readln(Number);

end;

write(f,li);

writeln('Есть еще сведения для списка?');

readln(k);

until k='n';

Close(f);

Writeln('Данные сохранены. Нажмите любую клавишу...');

ReadKey;

end; { SaveBase_in_file}

procedure List_creat;

{Создание обычного списка при чтении данных из файла Файл по умолчанию устанавливается для решения задачи с любым произвольным именем }

Begin

Init;

Assign(f,'Wnd.bas');

reset(f);{Проверку наличия файла опускаем, предполагая уже известными эти действия }

While not eof(f) do

Begin

read(f,li);

Insert_list(li);

end;

end;

procedure List_displ;

{ Вывести полностью список на экран для проверки правильности записи и преобразований}

var i:integer;

Begin

i:=1;

lp:=pStart;

writeln('Список всех, имеющихся в файле ');

while lp<>nil do

Begin

write(i,' ');

write(lp^.li.title+' ');

write(lp^.li.Nm+' ');

write(lp^.li.Pt+' ');

writeln(lp^.li.Number);

lp:=lp^.next;

i:=i+1;

end;

end;{Список можно теперь увидеть на экране}

procedure List_equal;

{Алгоритм поиска однофамильцев используется для упорядоченного списка по фамилиям, но он будет пригоден и для произвольного списка}

var i:integer;p:boolean;

Begin

lp:=pStart;

pList:=lp;

i:=1;

while lp<>nil do

Begin

p:=true;

while (p and (pList<>nil)) do

Begin

if pList<>lp then

if lp^.li.Title=pList^.li.Title then

Begin

write(i,' ');

write(lp^.li.Title+' ');

write(lp^.li.Nm+' ');

write(lp^.li.Pt+' ');

writeln(lp^.li.Number);

i:=i+1;

p:=false;

end;

pList:=pList^.next;

end;

pList:=lp;

lp:=lp^.next;

end; {Просмотр списка начинается заново всегда со следующего элемента}

end; {конец поиска однофамильцев}

procedure Sort;

Var

p1, p2, temp: pEl_list;

tt:list;

Begin

if ((pStart = nil) or (pStart^.Next = nil)) then

exit;

Repeat

p1:= pStart;

p2:=p1^.next;

noswap:=true;

while (p2 <> nil) do

Begin

if (p1^.li.Title > p2^.li.Title) then

Begin

{сравниваем только поля фамилий в списке}

noswap:=false;

tt:= p1^;

p1^:= p2^;

p2^:= tt;

temp:= p1^.next;

p1^.next:= p2^.next;

p2^.next:= temp;

end;

p1:=p2;

p2:= p2^.Next;

end;

until noswap;

end;{Конец сортировки}

procedure redact(x1,y1,l,v:integer);

Begin

textbackground(2);

window(x1+2,y1+oi*2-1,x1+l+2,y1+oi*2-l);

clrscr;

write(alter[oi]);

textbackground(4);

window(x1+2,y1+v*2-i,x1+l+2,y1+v*2-l);

clrscr;

write(alter[v]);

end;

procedure dialog;

Begin

textbackground(1);

window(30,2,78,23);

clrscr;

end;

procedure alt(x1,y1,l:integer); {это только меню в текстовом режиме для выполнения всех действий в определенной последовательности}

var k:char;

Begin

i:=1;

oi:=2;

Repeat

dialog;

Repeat

if oi<>i then redact(x1,y1,l,i);

oi:=i;

k:=readkey;

if k=#0 then k:=readkey;

Case k of

#72: if i>1 then dec(i)

else i:=kol;

#80: if i<kol then inc(i)

else i:=1;

#75: i:=1;

#77: i:=kol;

end;

until k=#13;

Case i of

1: begin dialog;

writeln('Должен формироваться список');

savebase_in_file;

end;

2: begin dialog;

if pStart = nil then begin

writeln('Прочитайте данные из файла'#10#13);

List_creat;

Readln; end

Else

Begin

writeln('Выполняем сортировку списка');

List_creat;

Sort;end;

end;

3: begin dialog;

writeln('Список всех');

List_displ;

readln;

end;

Begin

dialog;

If noswap then begin

writeln('Список однофамильцев');

List_equal;readln; end

Else begin

Sort;List_equal;

readln;

end;

end;

Begin

dialog;

writeln('Вы хотите уничтожить список- y or n?');

readln(ch);

if ch='y' then DeleteList;

halt;

end;

end;

until false;

end;

procedure vivod(x1,y1,l:integer);

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.


Решение графических задач

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

1.6.2. В файл занести некоторую последовательность из 8 натуральных чисел. Эта последовательность задает число дней в году, в которых преобладало соответственно северное, северно-восточное, восточное, юго-восточное, южное, юго-западное, западное, северно-западное направление ветра. Построить розу ветров.

1.6.3. Построить на экране переднюю панель дома и обеспечить возможность “зажигать” и “гасить ” свет в доме: включение и выключение света должно выполняться с клавиатуры, окна дома при зажженном и при погашенном свете окрашивается в разные цвета.

 

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

1.6.5. Построить график функции Y= –6 *X2 +3*X. График должен быть нарисован в осях координат и область определения функции может быть заданной разработчиком.

1.6.6. Построить график функции Y= cos(X-1)+|X|. Обеспечить просмотр графика на любом диапазоне входных значений и изменение масштаба изображения зависимости.

1.6.7. Изобразить на экране область определения и построить графики следующих функций:

Ø y=1/x;

Ø y= (x+3)/(x-2);

Ø y=(x+3)/(x-2);

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

 

1.6.8. (а,б). Выполнить изображение в соответствии с шаблоном, приведенном на рисунке.

1.6.9. Для вычерчивания окружности, заданной параметрическими уравнениями x=r*cos(t), y=r*sin(t), tє[,2p), воспользоваться параметрическими уравнениями

Ø x=xc+r*(1-t2)(1+t2)

Ø y=yc+r*(2*t)(1+t2),tє[,1).

Указанное изменение параметра соответствует дуге окружности от 0 до p2. Полная окружность может быть получена симметричным отображением каждой полученной точки относительно осей 0X и Y и начала координат в предположении, что начало координат совмещено с центром окружности. (рисунок). В файл занесены тройки значений xc, yc и r. Построить окружности с центром в точке (xc., yc) и радиусом r.

1.6.10. Построить спираль вокруг начала кооординат с n витками и внешним радиусом r; начальное направление спирали образует с осью X угол a. Параметрическое представление спирали x= r*cos(t), y=r*sin(t), a£t£ 2np, r=t/2.

1.6.11. Построить изображения квадратов с внутренними делениями. Количество линий деления может быть любым и вводится по запросу с клавиатуры. Обеспечить раскраску всех соседних ячеек другим цветом. Варианты рисунков: а),б), в), г), д), е), ж), з), и).

 

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

1.6.13. Даны координаты трех различных точек: x1, y1, x2, y2, x3, y3. Построить отрезок с координатами концов (x1, y1) и (x2, y2). Через точку (x3, y3) провести отрезок параллельный и равный по длине первому отрезку, но таким образом, чтобы точка (x3, y3) делила искомый отрезок пополам. Количество задаваемых наборов точек - произвольное.

1.6.14. Задаются натуральные числа xc.,yc, h, w, x, y. Построить прямоугольник с центром в точке (xc., yc), высотой h и шириной w. Провести прямую через точки xc.,yc и x, y и отметить точка пресечения прямой и стороны прямоугольника.

1.6.15.
 
 

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

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

1.6.17. Даны натуральные числа xc.,yc, r, x, y, h, w. Построить окружность с радиусом r и центром xc.,yc и прямоугольник с центром в точке x, y, высотой h и шириной w. Соединить отрезком центры окружности и прямоугольника. Изобразить прямую другим цветом. Варианты изображения самой прямой представлены на рисунке.

1.6.18. Даны координаты левого верхнего угла и правого нижнего угла двух прямоугольников. Проверить пересекаются ли прямоугольники. Если они пересекаются, то выделить цветом их общую часть. Проверку пересечения можно выполнить проверкой следующих соотношений длин прямоугольников: 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.6.19. Использовать для изображения прямой метод резиновой нити. Метод заключается в следующем: фиксируется один конец линии, указатель-курсор помещается на второй конец нити и за этот конец прямая вытягивается в любом направлении. Изменять скорость перемещения конца нити.

1.6.20. Используя метод резиновой нити построить:

Ø резиновый прямоугольник

Ø резиновый треугольник.

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

1.6.21. Нарисовать окружность на экране и обеспечить управление изменением ее размеров и положения с помощью клавиш: < - уменьшение размера окружности на заданное количество пикселей, > - увеличение размера окружности, а стрелки ­, ¯,, ® - обеспечивают перемещение окружности по экрану. Координаты центра окружности и ее радиус задаются. При достижении края экрана все преобразования окружности должны блокироваться.

1.6.22. Нарисовать произвольный прямоугольник. Обеспечить управление его перемещением по экрану с помощью стрелок ­, ¯,, ®. Клавиши < и > должны обеспечить соответственное изменение ширины прямоугольника, а клавиши + и - - увеличение и уменьшение высоты прямоугольника. При достижении любого края экрана все преобразования должны блокироваться.

1.6.23. Обеспечить перемещение по экрану точки точно по горизонтали экрана. Точку изобразить окружностью малого радиуса и цветом, отличным от цвета фона. При достижении точкой края экрана должна из этого края появляться следующая точка. Строка, в которой появляется новая точка, выбирается с помощью датчика случайных чисел. Цвет каждой новой точки выбирается также случайным образом.

1.6.24. Изобразить на экране точку, которая движется по окружности. управление скоростью движения точки обеспечивается клавишами < (скорость уменьшается) и >(скорость увеличивается). Цвет движущейся точки должен отличаться от цвета окружности.

1.6.25. Изобразить на экране отрезок прямой, который вращается в плоскости экрана следующим образом:

Ø вокруг своей середины;

Ø вокруг любого из концов;

Ø вокруг точки, делящей прямую в отношении 1:n.

Число n задается в диалоге при определении режима вращения.

1.6.26. Изобразить на экране приближающийся издали шар. Изменять скорость приближения шара, а также точку, из которой начинает шар движение.

1.6.27. Получить изображение “Круги на воде”. Использовать семь концентрических окружностей. Радиус каждой из окружностей отличается от ближайшей окружности на 7 пикселей. Движение создается последовательной сменой цветов всех окружностей, начиная с внутренней окружности и заканчивая внешней. Процесс смены цветов повторяется любое число раз.

ПРИМЕР 1_6.

Program number1_6;

{Дана окружность. Вписать в окружность треугольник.

Окружность задается радиусом и координатами центром}

uses graph;

var dr,md:integer;

ch:char;

p:boolean;

x,y,x1,y1,x2,x3,y2,y3,r:integer;

function coord(r,k,z,x,y:integer):integer;

var a:real;

Begin

a:=k*sqrt(sqr(r)-sqr(z-x))+y;

coord:=trunc(a);

end;

Begin

initgraph(dr,md,'c:\tpp\bgi');

if graphresult<>0 then

Begin

writeln('ошибка инициализации графики');

halt;

end;

Repeat

cleardevice;

setcolor(red);

setbkcolor(black);

Repeat

p:=true;

outtextxy(1,1,'Input point of centre');

readln(x,y);

readln(r);

if ((x+r)>getmaxX) or ((y+r)>getmaxY) then

Begin

p:=false; moveto(1,10);

outtextxy(1,10,'Repeat Input of pointer ');

end;

until p;

{Вычисляем координаты вершин

вписанного треугольника}

x1:=x-(r div 2);

y1:=coord(r,1,x1,x,y);

x2:=x;

y2:=coord(r,-1,x2,x,y);

x3:=x+(2*r div 3);

y3:=coord(r,1,x3,x,y);

cleardevice;

circle(x,y,r);

line(x1,y1,x2,y2);

line(x2,y2,x3,y3);

line(x3,y3,x1,y1);

readln;

cleardevice;

outtextxy(1,20,'Будете вводить новые данные?');

readln(ch);

until ch='n';

closegraph;

End.


РАЗДЕЛ 2



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 187; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.13.113 (0.26 с.)