Программирование на языке Паскаль в среде Турбо Паскаль
Отчет по практике - Компьютеры, программирование
Другие отчеты по практике по предмету Компьютеры, программирование
9; );;;();(m);i: =1 to m do begin[i]: =random (15) +random (5);;;();i: =1 to n do begin(c [i], );;;i: =1 to m do begin: =n+1;[n]: =c [i];;();i: =1 to n do(a [i], );;;_Sort (n,a);();i: =1 to n do(a [i], );;;: =a [1];i: =1 to n do begina [i] <min then min: =a [i];;(= ,min);;: =0;i: =1 to n do begina [i] mod a [min] =0 then: =i;;: =a [1];();i: =1 to n do(a [i] mod min = 0) then(i: 3);;;.
Результат решения задачи представлен на рисунке 11.
Рисунок 11 - Результат работы программы в TurboPascal
1.11 Сортировка разделением
Задан массив К (N). Добавить массив С (В). Выполнить сортировку разделением. В полученном массиве найти индексы элементов, которые кратны минимальному значению элемента массива.
Листинг - Сортировка разделением
type mas=array [1.20] of integer;
var i,min,n,m, imn: integer; a,c: mas;
procedure sort (l,r: integer);
var
i,j,x1,y1,m: integer;
begin: =l;: =r;: =round ( (l+r) /2);: =a [m];a [i] j;l<j then sort (l,j);i<r then sort (i,r);;;();(n);i: =1 to n do begin[i]: =random (10) +random (5);;();i: =1 to n do begin(a [i], );;;();(m);i: =1 to m do begin[i]: =random (15) +random (5);;;();i: =1 to n do begin(c [i], );;;i: =1 to m do begin: =n+1;[n]: =c [i];;();i: =1 to n do(a [i], );;;(1,n);();i: =1 to n do(a [i], );;;: =a [1];i: =1 to n do begina [i] <min then min: =a [i];;(= ,min);;: =0;i: =1 to n do begina [i] mod a [min] =0 then: =i;;: =a [1];();i: =1 to n do(a [i] mod min = 0) then(i: 3);;;.
Результат решения задачи представлен на рисунке 12.
Рисунок 12 - Результат работы программы в TurboPascal
1.12 Статическое и динамическая распределение памяти
.Заполнить массив В (10) случайными значениями. Организовать вывод на экран. Присвоить указателю адрес начала размещения массива в памяти. Напечатать значения четных значений элементов массива. Присвоить указателю адрес 10-го элемента, напечатать его значение, используя текущий базовый адрес сегмента и смещение с преобразованием в значение типа указатель. Заменить его содержимое на значение третьего элемента. Напечатать его новое значение.
Для тестирования программы использовались данные, приведённые в таблице 12. Полученные результаты приведены там же.
Входные данныеВыходные данные5-54-68-95-4-8-6Положительные числа4 элемент умноженный на 2548516
Листинг - Статическое и динамическое разделение памятиyp14; {название программы}crt; {подключение библиотеки}{описание типов}=array [1.10] of integer; {описание массива}{раздел описания переменных},z: integer;: massiv;: ^massiv; {указатель на массив}clrscr; {очистка экрана}
writeln (Vvedite elementy massiva: ); {выводнаэкран}
for i: =1 to 10 do {выводэлементовмассива}(a [i]);;(Vveden massiv: );i: =1 to 10 do {выводэлементамассива}(a [i]: 3);;;: =@a; {присвоение указателю адрес начала массива в памяти}
writeln (-------------------------------------------);(Polozitelnie 4isla: );i: =1 to 10 doPtrMas^ [i] mod 2 =0 then(PtrMas^ [i]);;: =Ptr (Seg (a [9]),Ofs (a [9]) +SizeOf (integer)); {присвоениеадреса 4 элемента}(-------------------------------------------);(10 element: );
writeln (PtrMas^ [1]); {вывод значения 4 лемента}(novoe zna4enie 10: );(ptrmas^ [1]); {вывод умноженного массива}
ptrMas^ [1]: =a [3];(novoe zna4enie 10: );(ptrmas^ [1]);; {задержкаэкрана}. {конец программы}
Результат решения задачи представлен на рисунке 13.
Рисунок 13 - Результат работы программы в TurboPascal
1.13 Организация списков
Создать связанный список из записей, содержащих сведения о товаре (код товара, наименование товара, цена), реализовать операции со связанным списком: запись первым в список, удаление первого объекта из списка, просмотр всего списка, удаление объекта, следующего за указанным.
Листинг - Организациясписков
Programyp15;
UsesCrt;
Type
NameStr = String [20];
SNameStr = string [20];= ^Auto;= record: NameStr; {названиетовара}: integer; {кодтовара}: integer; {ценатовара}: Link; {связьсоследующимобъектом};,First: Link; {указательнатекущуюзапись}: NameStr; {поискпоназванию}: 0.4; {меню}: boolean; {завершениеменю}(FN: NameStr): Link; {поискпофамилии}: Link;: =First; {установканапервый}<>Nildo{доконцасписка}Curr^. Name=FN then {нашли}: =Curr; {возвращаемуказатель}; {завершениефункции}: =Curr^. Next; {следующий}: =Nil; {еслиненашло}; {end FindName}AddFirst (A: Link); {добавление 1 записи}^. Next: =First; {новыйобъект 1}: =A; {ссылканановыйобъект}; {конецпроцедуры}DelFirst (var A: Link); {удаление 1 }: =First;: =First^. Next;; {end DelFirst}DelAfter (Old: Link; var A: Link); {удаленияобъектазастарый}: =Old^. Next; {присвоенияуказателя}^. Next: =Old^. Next^. Next;; {конецпроцедуры}InpAvto; {ввод}: =New (Link); {новыйобъект}(Ha3BaHuE: );(P^. Name);(Kog: );(P^. kod);
write (Cena: );(P^. cena);
AddFirst (P); {вызов процедуры добавления }
end; {конец процедуры}
procedureMyList; {вывод записей}
varCurr: Link; {указатель на след. запись}
begin
Curr: =First; {установка на 1ую запись}
whileCurr<>Nildo(Na3BaToBapa: , Curr^. Name, Kod ToBaPa: , Curr^. kod, Kol-vo: ,Curr^. cena: 3);: =Curr^. Next; {переход к следующей}
end;;;; {end MyList}
{********************************}{Osnova}(P); {новаядинамическаяпеременная}: =False;;(Vi6irite punktick: );(1. Zapisat pervblm);(2. Ydalit pervyl0 zapis);(3. Prosmotr vsego spiska);(4. ydalenie );(0. EXIT);(V);V of {вызовнужнего}
: InpAvto; {выводданных}
: DelFirst (P); {удаление 1}
: MyList; {вывод}
: begin{удалениеследующего}(VvodHa3BaHu9 poslekotorogodelete: );(NamFind);(Findname (NamFind),P); {вызовудаления}: =True; {конецменю};EndMenu;(P); {освобождениекучи}.
Результат решения задачи представлен на рисунке 14.
Рисунок 14 - Результат работы программы в TurboPascal
Рисунок 15 - Результат работы программы в TurboPascal
Рисунок 16 - Результат работы программы в TurboPascal
1.14 Модуль Graph
Написать программу, которая выводит на экран изображение шахматной доски. Используйте желтый и коричневый цвета для закрашивания квадратов. Прорисовка каждой детали выполняется с задержкой 1000 мс. После полной прорисовки стирать изображение и повторно выводить узор до нажатия Esc
Листинг - МодульGraph
uses crt,graph;
procedure Kletka (x1,y1,c: integer; d: inte