![]() ![]() |
Главная страница > Курсовая работа: Работа с текстовыми строками, двумерными массивами, файловыми структурами данных | Курсовая работа: Работа с текстовыми строками, двумерными массивами, файловыми структурами данных |
|
![]() |
5.2 Работа программыBegin Задаем цикл, и заполняем массив ch, который будет отвечать за введение информации в другой массив. for i:=1 to 200 do ch[i]:=false; Очищаем экран для удобного ввода, и выводим меню на экран, которое представлено на рисунке 4. Рисунок 5 – меню пятой программы. clrscr; menu; Задаем две переменные, которые отвечают за работу программы и за введение количества элементов. cont:=true; fzap:=false; while cont do begin write('Vvedite komandu: '); readln(command); case command of '0': cont := false; '1': Begin Задаем общее количество элементов массива, если запись будет соответствовать условию, то fzap присвоится true. Write('Vvedite kol-vo zapisei(1..200): '); readln(n); if (n>0) and (n<=200) then fzap:=true else fzap:=false; end; '2': Begin Если было введено общее количество записей, то запустится цикл с повторяющейся процедурой, до тех пор пока не будут введены все записи. В противном случае выведется сообщение, что не введено общее количество записей. if fzap=true then begin for i:=1 to n do сhange(i, avtovl, ch); clrscr; menu; end else writeln('Ne vvedeno kol-vo zapisei'); end; '3': Begin Если было введено общее количество элементов, то можно редактировать записи по очереди. Если введено число больше общего числа элементов, то программа сообщит от ошибке ввода. if fzap=true then begin write('Vvedite nomer redaktiryemoi zapisi: '); readln(i); if i>n then writeln('Wrong input') else begin change(i, avtovl, ch); clrscr; menu; end; end else Writeln('Ne vvedeno obshee chislo zapisei'); end; '4': Begin Вначале программа проверяет, введено ли общее число элементов. Затем проверяет каждый элемент по очереди. Если все они заполнены, то начинается выполнятся процедура по подсчету машин каждой марки. if fzap=true then begin for i:=1 to n do if ch[i]=false then begin dzap:=false; writeln('Vvedeni ne vse zapisi'); end else dzap:=true; if dzap=true then mark(avtovl); end else Writeln('Ne vvedeno obshee chislo zapisei'); end; '5': Begin Все проверки выполняются аналогично предыдущему варианту, но здесь выбирается процедура нахождения хозяина самого старого авто. if fzap=true then begin for i:=1 to n do if ch[i]=false then begin dzap:=false; writeln('Vvedeni ne vse zapisi'); end else dzap:=true; if dzap=true then mostold(avtovl); end else Writeln('Ne vvedeno obshee chislo zapisei'); end; '6': Begin Все проверки выполняются аналогично предыдущему варианту, но здесь выбирается иная процедура. if fzap=true then begin for i:=1 to n do if ch[i]=false then begin dzap:=false; writeln('Vvedeni ne vse zapisi'); end else dzap := true; if dzap=true then oprmarki(avtovl); end else Writeln('Ne vvedeno obshee chislo zapisei'); end; end; end; end. Процедура oprmarki; procedure oprmarki(x: mas); var h:integer; m:string; begin Вводим название марки, и программа переберет все записи и при нахождение такой же марки выведет на экран фамилию владельца и номер автомобиля. Write('Vvedite marku avto: '); readln(m); for h:=1 to n do if x[h].Avto=m then writeln(x[h].Familia, ' nomer-', x[h].Nomer); end; Процедура нахождения самого старого авто procedure mostold(x: mas); var min,nmin,h:integer; begin min:=x[1].Vypusk; nmin:=0; Перебираем все записи и сохраняем минимальный год выпуска в переменную min, а номер записи в переменную nmin. А после цикла их выводит на экран. for h:=1 to n do if x[h].Vypusk<min then begin min:=x[h].Vypusk; nmin:=h; end; Writeln(x[nmin].Familia, ' - ', min,' god vypuska'); end; Процедура подсчета автомобилей каждой марки. procedure mark(x: mas); var h, l, k: integer; begin for h := 1 to n do begin Вначале программы задаем пустое множество. И запускаем цикл. Если определенной марки нет в множестве, тогда добавляем ее. И запускаем второй цикл, только начиная не с единицы, а с h-го элемента. Затем если h-ый и l-ый элементы совпадают, прибавляем к счетчику единицу .И в конце второго цикла выводим собранные данные на экран. if not (x[h].avto in marki) = true then begin k := 0; include(marki, x[h].avto); for l:=h to n do if x[h]=x[l] then if x[l].avto in marki then k:=k + 1; writeln(x[h].avto, '-', k); end; end; end; Процедура ввода данных в запись. procedure change(x: integer; var z: mas; var v: mas2); begin clrscr; В контрольный массив ставим, что данная запись с этим номер заполнена. v[x]:=true; write('Vvedite familiu: '); readln(z[x].familia); write('Vvedite adress: '); readln(z[x].adress); write('Vvedite marku avto: '); readln(z[x].avto); write('Vvedite nomer avto: '); readln(z[x].nomer); z[x].Vypusk:= 0; while (z[x].Vypusk < 1900) or (z[x].Vypusk > 2000) do begin write('Vvedite god vipuska(1900..2000): '); readln(z[x].vypusk); end; end; 6 Заключение.В ходе выполнения курсовой работы мною был изучен язык програмированния Pascal. Также получены практические навыки работы с текстовыми строками, двумерными массивами, файловыми структурами данных, элементами машинной графики и записями. 7 Приложения АКод программы 1 program slova1; uses crt; type Stroka250=string[250]; Slovo=string[20]; function Copy1(S: Stroka250; Start, Len: Integer):Stroka250; var Rez: Stroka250; L: Integer; I, J: Integer; begin L:=byte(S[0]); if (L<Start) then Rez[0]:=char(0) else begin if (Start+Len-1)>L then Len:=L-Start+1; J:=Start; for I:=1 to Len do begin Rez[I]:=S[J]; Inc(J); end; Rez[0]:=char(Len); end; Copy1:=Rez; end; function isletter(C: Char): Boolean; begin if ((C>='A') and (C<='Z')) or ((C>='a') and (C<='z')) then isletter:=True else isletter:=False; end; function alforder(Sl: Slovo; var Count: Byte): Boolean; var I, L: Byte; F: Boolean; Buf: Char; begin L:=Length(Sl); Count:=0; for I:=1 to L do begin |
|
![]() |
|
Copyright © 2006-2012 |