НГУ :: Системный анализ и управление
С ИСТЕМНЫЙ [http://chuprina-007.narod.ru/] А НАЛИЗ и Найти: на: сайте narod.ru yandex.ru У ПРАВЛЕНИЕ Национальный горный университет (Днепропетровск) Навигация Главная Программирование +ПО Библиотека Статьи Рефераты История и люди Группа Прочее Ссылки Институт и кафедра Творчество Иванова Гостевая Архив Статистика Проект NMUU-SA : Программирование Последние статьи Интернет черви - основы основ Искусственная проблема искусственного интеллекта Образ мышления системного аналитика 3 шага для защиты вашего компьютера Программирование Кто здесь? Содержание: Исходники программ Процедуры и функции Алгоритмы ПО ЭВМ (лабы по Excel) Учебные и др. материалы Задание на летнюю практику (2-й курс) СП (Assembler) Примечание: Все исходники (в т.ч. процедуры и функции) написаны на языке Pascal [Если у вас есть интересные программы или алгоритмы, то вы можете прислать их мне для размещения здесь] Исходники программ № Задача Процедуры и функции 1 Найти наибольшее общее кратное 4 заданных натуральных чисел. Простой пример использования процедур. Задача из лабораторных работ. Смотреть Графика 1 Заданы 2 числа (HH:MM). Нарисовать циферблат со стрелками. Программа написана с использованием процедур. Задача с блока. Смотреть 2 Нарисовать часы, показывающие текущее время. Модифицированный вариант задачи №1. Смотреть 3 Дано натуральное число r. Построить 8 точек, являющихся вершинами правильного восьмиугольника, вписанного в окружность радиуса r, и провести все его диагонали. Координаты точек задаются формулами: x=r* cos (pi/4); y=r* sin (pi/4); i=1,2,...,8. Задача из лабораторных работ. Смотреть Сортировка 1 Отсортировать элементы квадратной матрицы по убыванию в направлении, как показано на рис. Программа из летней практики. Для сортировки применён метод "пузырька". Смотреть Процедуры и функции Задача №1 uses crt; var k,l,m,n,otv:byte; T:array[1..4] of byte; procedure xfiles(a,b,c,d:byte; var res:byte); var dr,i:byte; begin dr:=0; for i:=1 to a do begin inc(dr); if (a mod dr=0) and (b mod dr=0) and (c mod dr=0) and (d mod dr=0) then res:=dr; end; end; begin clrscr; writeln('Enter values a,b,c,d'); readln(k,l,m,n); xfiles(k,l,m,n,otv); writeln('Result: ',otv); readln; end. Графика Задача №1 uses graph; const r=100; var gd,gm:integer; t,h,m:byte; ch,cm:real; procedure clock(t1,t2:byte); var c1,c2:real; begin gd:=detect; gm:=0; initgraph(gd,gm,''); circle(getmaxx div 2,getmaxy div 2,r); c1:=t1*(pi/6); setlinestyle(solidln,0,thickwidth); line(getmaxx div 2,getmaxy div 2,(getmaxx div 2)+trunc(r*sin(c1)),(getmaxy div 2)-trunc(r*cos(c1))); readln; setlinestyle(solidln,0,normwidth); c2:=t2*(pi/30); line(getmaxx div 2,getmaxy div 2,(getmaxx div 2)+trunc(r*sin(c2)),(getmaxy div 2)-trunc(r*cos(c2))); readln; closegraph; end; begin writeln('enter hours and minutes:'); readln(h,m); clock(h,m); end. Задача №2 uses dos,crt,graph; const r=200; var gd,gm:integer; t1,t2,t3,t4:word; c1,c2:real; begin repeat gd:=detect; gm:=0; initgraph(gd,gm,''); circle(getmaxx div 2,getmaxy div 2,r); gettime(t1,t2,t3,t4); c1:=t1*(pi/6); setlinestyle(solidln,0,thickwidth); line(getmaxx div 2,getmaxy div 2,(getmaxx div 2)+trunc(r*sin(c1)),(getmaxy div 2)-trunc(r*cos(c1))); setlinestyle(solidln,0,normwidth); c2:=t2*(pi/30); line(getmaxx div 2,getmaxy div 2,(getmaxx div 2)+trunc(r*sin(c2)),(getmaxy div 2)-trunc(r*cos(c2))); outtextxy(getmaxx div 2-20,getmaxy div 2+30,'rolex'); delay(50000); until keypressed; closegraph; end. Задача №3 USES CRT,GRAPH; CONST R=200; VAR I,J:BYTE; GDRIVER,GMODE,ERRCODE:INTEGER; x,y:ARRAY[1..9] OF INTEGER; BEGIN CLRSCR; GDRIVER:=DETECT; GMODE:=0; INITGRAPH(GDRIVER,GMODE,''); BEGIN FOR I:=1 TO 8 DO BEGIN x[I]:=trunc(R*(COS((Pi*I)/4))); y[I]:=trunc(R*(SIN((Pi*I)/4))); PUTPIXEL(getmaxX div 2+x[I],getmaxY div 2+y[I],15); END; READLN; CIRCLE(getmaxX div 2,getmaxY div 2,R); PUTPIXEL(getmaxX div 2,getmaxY div 2,15); READKEY; FOR I:=1 TO 7 DO LINE(getmaxX div 2+x[I],getmaxY div 2+y[I],getmaxX div 2+x[I+1],getmaxY div 2+y[I+1]); LINE(getmaxX div 2+x[1],getmaxY div 2+y[1],getmaxX div 2+x[8],getmaxY div 2+y[8]); READLN; FOR I:=1 TO 7 DO FOR J:=1 TO 8 DO BEGIN SETLINESTYLE(2,0,0); LINE(getmaxX div 2+x[I],getmaxY div 2+y[I],getmaxX div 2+x[J],getmaxY div 2+y[J]); END; READLN; CLOSEGRAPH; END; END. Сортировка Задача №1 [Программа работает только для матрицы 8x8, или меньшего размера, не помню, кажись работала =), для размеров больше 8x8 работает неправильно!] uses crt; const m=8; n=8; o=64; var a:array [1..m,1..n] of byte; b:array [1..o] of byte; i,j,t,p:byte; r1,d1,l1,u1,right,left,up,down:byte; finished:boolean; (**************************) procedure swap(var x,y:byte); var temp:byte; begin temp:=x; x:=y; y:=temp; end; (**************************) begin clrscr; p:=o; randomize; for i:=1 to m do for j:=1 to n do a[i,j]:=round(random*89+10); for i:=1 to m do begin for j:=1 to n do write(a[i,j],' '); writeln end; writeln('=============================='); r1:=1; d1:=1; l1:=1; u1:=2; right:=0; left:=0; up:=1; down:=0; (**********) repeat (*****) for j:=r1 to (n-right)-1 do begin i:=r1; b[p]:=a[i,j]; p:=p-1; end; inc(r1); inc(right); (*****) for i:=d1 to (m-down) do begin j:=m-down; b[p]:=a[i,j]; p:=p-1; end; inc(d1); inc(down); (*****) for j:=(n-left)-1 downto l1 do begin i:=n-left; b[p]:=a[i,j]; p:=p-1; end; inc(l1); inc(left); (*****) for i:=(m-up) downto u1 do begin j:=u1-1; b[p]:=a[i,j]; p:=p-1; end; inc(u1); inc(up); until l1=5; (**********) (* bubble algorithm *) repeat finished:=true; for i:=2 to o do if b[i]
A[j] then begin {перестановка местами A[j-1] и A[j]} temp:=A[j-1]; A[j-1]:=A[j]; A[j]:=temp; end; end; Графы Алгоритм №1 procedure dijkstra; begin S:={1}; for i:=2 to n do D[i]:=C[1,i]; {инициализация D} for i:=1 to n-1 do begin выбор из множества V\S такой вершины w, что значение D[w] минимально; добавить w к множеству S; for каждая вершина v из множества V\S do D[v]:=min(D[v],D[w]+C[w,v]) end; end; Пояснение: Алгоритм строит множество S вершин, для которых кратчайшие пути от источника уже известны. На каждом шаге к множеству S добавляется та из оставшихся вершин, расстояние до которой от источника меньше, чем для других оставшихся вершин. Если стоимости (длины) всех дуг неотрицательны, то можно быть уверенным, что кратчайший путь от источника к конкретной вершине проходит только через вершины множества S. Назовём такой путь особым . На каждом шаге алгоритма используется также массив D, в который записываются длины кратчайших особых путей для каждой вершины. Когда множество S будет содержать все вершины ориентированного графа, т.е. для всех вершин будут найдены "особые" пути, тогда массив D будет содержать длины кратчайших путей от источника к каждой вершине. Здесь предполагается, что в ориентированном графе G=(V, E) вершины поименованы целыми числами, т.е. множество вершин V={1, 2, ..., n}, причём вершина 1 является источником. Массив C - это двумерный массив стоимостей (длин дуг), где элемент C[i, j] равен стоимости дуги i->j. Если дуги i->j не существует, то C[i, j] ложится равным бесконечности, т.е. большим любой фактической стоимости дуг. На каждом шаге D[i] содержит длину текущего кратчайшего особого пути к вершине i. [Алгоритм и пояснение взял из книги, но лично я этот алогритм не понял. Что вот например значит строка "S:={1};", это имеется ввиду задание множества S или что это такое? Люди, если кто сможет мне объяснить этот алгоритм, пишите в форум, буду очень признателен] ПО ЭВМ (лабы по Excel) Задание на лабы на 1-й семестр Пример лабы №1 (вариант №4) Учебные и др. материалы Сообщения об ошибках компиляции в Turbo Pascal Сообщения об ошибках времени выполнения в Turbo Pascal Задание на летнюю практику (2-й курс) Оно самое! =) СП (Assembler) Задание на лабы Пример лабы №1