|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Язык программирования Turbo PascalЯзык программирования Turbo PascalСодержание
Задача модуля заключается в следующем: - Заполнить исходную матрицу А; - Обработать матрицу А и сформировать матрицу С, путем вычеркивания строки и столбца матрицы А, на пересечении которых находится минимальный элемент матрицы А; - Определить количество нулей в матрице С; - Вывести результат. Задача вызывающей программы заключается в следующем: - Создание интерфейса пользователя - меню; - Использование средств программного модуля. Схема алгоритма: 3.3 Алгоритмы реализации отдельных модулей задачиМодуль Modul1 содержит следующие процедуры и функции:· procedure create (var b:matr;t:integer); - процедура создания матрицы, t - способ создания;· procedure vivod (b:matr;t:integer;x:integer); - процедура вывода результата, t - способ вывода, x - тип матрицы(исходная, результирующая);· function nomi(x:char;b:matr):integer; - функция нахождения строки или столбца минимального элемента матрицы;· function null(c:matr):integer; - функция определяет количество нулей в матрице;· procedure obrab (b:matr;var c:matr); - процедура создание минора С из матрицы А;· function FileExists(FileName: String): Boolean; - функция определяет создан ли запрошенный на чтение файл.Вызывающая программа содержит:· procedure menu; - процедура, создающая программный интерфейс типа меню.Текст модуля modul1:unit modul1;interface{uses wincrt,winprn;}const n=40;typematr = array [1..n,1..n] of integer;var k1,k2: integer;procedure create (var b:matr;t:integer);procedure vivod (b:matr;t:integer;x:integer);function nomi(x:char;b:matr):integer;function null(c:matr):integer;procedure obrab (b:matr;var c:matr); function FileExists(FileName: String): Boolean;implementation function FileExists;var F: file;begin {$I-} Assign(F, FileName); Reset(F); Close(F); {$I+} FileExists := (IOResult = 0) and (FileName <> ''); end;function null;var k,i,j:integer; begin k:=0; for i:=1 to k1-1 do for j:=1 to k2-1 do if c[i,j]=0 then k:=k+1; null:=k; end;procedure obrab;var x,y,i,j:integer; begin x:=0; y:=0; for i:=1 to k1 do begin if i<>nomi('i',b) then x:=x+1; y:=0; for j:=1 to k2 do if (j<>nomi('j',b)) And (i<>nomi('i',b)) then begin y:=y+1; c[x,y]:=b[i,j]; end; end; end;function nomi; var min,a,i,j:integer; begin min:=maxint; for i:=1 to k1 do for j:=1 to k2 do begin if b[i,j]<min then begin min:=b[i,j]; if x='i' then a:=i; if x='j' then a:=j; end; end; nomi:=a; end;procedure create; var i,j,x,e:integer; f:text; ch: char; path,s: string;begin case t of 1: begin {random} randomize; writeln('Vvedite razmer matrici'); write('n='); readln(k1); write('m='); readln(k2); for i:=1 to k1 do for j:=1 to k2 do b[i,j]:=random(21)-10; end;{random} 2: begin{keyboard} writeln('Vvedite razmer matrici'); write('n='); readln(k1); write('m='); readln(k2); writeln('Vvedite ',k1*k2,' elementov'); for i:=1 to k1 do for j:=1 to k2 do begin write('Vvedite [',i,',',j,'] element: '); readln(s); val(s,x,e); if e=0 then b[i,j]:=x else begin Writeln('Matrica dolzhna sostoyat'' iz celih chisel'); readln; i:=k1; j:=k2; end; end; end;{keyboard} 3: begin{FromFile} i:=1; j:=1; s:=''; k1:=1; k2:=1; Writeln('Vvedite imya faila (ili polniy put)'); readln(path); if FileExists(path) then begin Assign(f,path); Reset(f); repeat Read(F, ch); if ch=#10 then begin i:=i+1; k1:=k1+1; k2:=j-1; j:=1; end; if ((ch<>' ')and(ch<>#13)and(ch<>#10)) then s:=s+ch else begin if (s<>'') then begin val(s,x,e); s:=''; if e=0 then begin b[i,j]:=x; j:=j+1; end else begin writeln('Oshibka v dannih'); end; end; end; until Eof(F); if s<>'' then begin val(s,x,e); s:=''; if e=0 then begin b[i,j]:=x; j:=j+1; end else begin writeln('Oshibka v dannih'); end; end; Close(f); end{FileExist} else begin writeln('Fail ne sushestvuet'); readln; end; end;{FromFile} end;{case}end;{procedure} procedure vivod; var i,j:integer; ff,fp:text; path:string; line:string;begin case t of 1: begin for i:=1 to k1-x do begin for j:=1 to k2-x do write (b[i,j]:6); writeln; end; if x=1 then Writeln('Kolichestvo nuley: ',null(b)); end; 2: begin Writeln('Vvedite imya faila (ili polniy put)'); readln(path); assign(ff,path); rewrite(ff); for i:=1 to k1-x do begin for j:=1 to k2-x do write(ff,b[i,j],' '); writeln(ff); end; Writeln(ff,'Kolichestvo nuley: ',null(b)); Close(ff); Writeln('Matrica uspeshno sohranena v faile ',path); end;(* 3: begin{Printer} AssignDefPrn(fp); for i:=1 to k1 do for j:=1 to k2 do Writeln(fp, b[i,j], ' '); if KeyPressed and (ReadKey = #27) then begin AbortPrn(Prn); Break; end;Close(fp); end;*){Printer}end;{case}end;{Procedure}end.Текст вызывающей программы:uses crt,modul1;var A,c:matr; f1,f2:boolean;procedure menu;var choise,cinp:char; inp,e:integer;begin clrscr; Writeln(' Menu'); Writeln(' 1. Vvod matrici A'); Writeln(' 2. Obraborat''matricu'); Writeln(' 3. Vivesti rezultat'); Writeln(' 4. Vihod'); choise:=readkey; if choise=#27 then halt; if ((choise<>'1') and (choise<>'4') and (f1=false)) then begin Writeln('Snachala neobhodimo sozdat'' matricu A'); cinp:=readkey; if cinp=#27 then halt; menu; end; if ((choise='3') and (f2=false)) then begin Writeln('Snachala neobhodimo obrabotat'' matricu A'); cinp:=readkey; if cinp=#27 then halt; menu; end; Case choise of '1': begin f1:=true; clrscr; Writeln; Writeln('1. Sozdat sluchainuyu matricu'); Writeln('2. Vvesti s klaviaturi'); Writeln('3. Iz faila'); cinp:=readkey; val(cinp,inp,e); if ((e=0) And ((inp=1) Or (inp=2) Or (inp=3))) then begin create(A,inp); menu; end else begin writeln('Neverniy vibor'); readkey; menu; end; end;{1} '2': begin f2:=true; obrab(a,c); Writeln('Matrica uspeshno obrabotana:'); Writeln('Ishodnaya matrica:'); vivod(A,1,0); Writeln('Naiden minor minimalnogo elementa [',nomi('i',A),',',nomi('j',A),']'); readkey; menu; end; '3': begin clrscr; Writeln; Writeln('1. Vivesti na ekran'); Writeln('2. Sohranit v fail'); Writeln('3. Raspechatat'''); cinp:=readkey; val(cinp,inp,e); if ((e=0) And ((inp=1) Or (inp=2) Or (inp=3))) then begin vivod(C,inp,1); readkey; menu; end else begin writeln('Neverniy vibor'); readkey; menu; end; end; '4': halt; else begin writeln('Neverniy vibor'); readkey; menu; end; end;{Case}end;BEGINclrscr;f1:=false;f2:=false;menu;readkey;END.ЗаключениеВыполнив данную работу, мы ознакомились со всеми вопросами, связанными с процессом создания модулей в Турбо Паскале и оперирование матричными данными. Расширили свои знания в области Турбо Паскаля и научились применять их в решении математических задач. Из наглядных примеров видно, что использование модулей серьезно облегчает трудоемкие процессы, а также препятствует загромождению программы кодом. |
РЕКЛАМА
|
|||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |