![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Circle: (Centre: Coordinats; Radius: real)Содержание книги
Поиск на нашем сайте
end {Figure}; Заметим, что конструкция вариантной части списка полей похожа на оператор варианта. Отличается она от него тем, что является описательной конструкцией и сама по себе никакого действия не производит. В конструкции вариантной части описаны возможные варианты полей, которые могут быть включены в конкретную запись, определенную в разделе переменных. Пример 9.4 Пусть, например, имеются некоторые данные о заводах города, сведенные в следующий документ:
Необходимо описать массив записей, содержащий данную информацию, произвести расчет и заполнить итоговую строку, а результат отпечатать. Для решения данной задачи следует обеспечить ввод массива записей, эхо-печать введенных данных, накопления суммы по каждому полю записи для формирования итоговой строки таблицы и вывод полученного результата. Summary - массив записей; plant - строка записи; name - наименование завода; information - основные сведения, area - площадь завода; production - объем продукции; plan - по плану; fact - фактически; person - обслуживающий персонал; superior - с высшим образованием; second - со средним образованием; note - примечание; Nmax - максимальное число записей; n - вводимое число записей; i - номер текущей записи; к - параметр цикла; s1, s2, s3, s4, s5 - суммы колонок. Program Example; Const Nmax= 10; Type plant = record name: string[5]; Information: record area: integer; Production: record Plan: real; fact: real end; Person: record superior: integer; second: integer; end; end; note: string[8] end; Var Summary: array[1..Nmax] of plant; i, k, n: integer; s1, s2, s3: real; s4, s5: integer; Begin {Example} Writeln('Введите количество заводов <= 10'); ReadLn(n); {Ввод записей} for i:= 1 to n do with Summary[i] do Begin Writeln('Введите данные о', i, '-м заводе:'); Write('Наименование:'); ReadLn(Name); With information do Begin Writeln ('занимаемая площадь:'); Read(area); With production do Begin WriteLn('производство продукции'); Write(' по плану:'); Read(plan); Write(' фактически:'); Read(fact); end; With person do
Begin WriteLn('численность персонала'); Write(' с высшим образованием:'); Read(superior); Write(' со средним образованием:'); ReadLn(second); End; end; Write('примечание:'); ReadLn(note); end; {Вывод заголовка таблицы} for k:= 1 to 80 do Write(‘_’); WriteLn; WriteLn('|','|':15, 'Основные сведения'.ЗЗ, '|':18, '|':13); Write('|','|':15); for k:= 1 to 50 do Write(‘_’); Write(‘|’, ‘|’:13); WriteLn('|', 'Наименование |':15, 'Площадь |':10, 'Объем продукции': 18, '|':4, 'Персонал': 13, '|':6, 'Примечание |':13); Write(‘|’, ‘|’:15, l':10); for k:= 1 to 40 do Write('_'); Write(‘|’, ‘|’:13); WriteLn(‘|’, ‘|’:15, '|':10, 'по плану |':11, 'факт':7, ‘|’:4, 'высшее |':9, 'среднее |':10, ‘|’:3); for к:= 1 to 80 do Write(‘_’); WriteLn; {Вывод строк таблицы} for i:= 1 to n do with Summary[i] do Begin WriteLn(‘|’, name,':12-Length(name), '|':2, information.area:8, '|':2, information.production.plan:7:1, '|':2, information.production.fact:7:1, '|':2, information.person.superior:7, '|':2, information.person.second:8, '|':2, note,' ':12-Length(note), ‘|’); for k:= 1 to 80 do Write(‘|’); WriteLn; {Формирование и вывод итоговой строки} s1:= 0; s2:= 0; s3:= 0; s4:=0; s5:= 0; for i:= 1 to n do with Summary[i].information do Begin s1:= s1+area; s2:= s2+production.plan; s3:= s3+production.fact; s4:= s4+person.superior; s5:= s5+person.second end; with Summary[n+1] do Begin name:= 'ИТОГО'; information.area:= s1; information.production.plan:= s2; information.production.fact:= s3; information.person.superior:= s4; information.person.second:= s5; WriteLn('|', name,' ':12-Length(name), '|':2, s1:8, '\':2, s2:7:1, '|':2, s3:7:1, '|':2, s4:7, '|':2, s5:8, '|':2, '|':13); end; for k:= 1 to 80 do Write(‘|’); WriteLn; End. {Example} Пример 9.5 Ввести в ЭВМ ведомость студентов одной группы по пяти предметам. Вывести на экран фамилии и номера зачеток неуспевающих студентов. Program Count_2; Const Nmax=40; { Max количество студентов в группе } Dl=15; { длина фамилии и имени } M=5; { количество оценок } Type Stud = Record Fam,Im,Ot: String [dl]; Numz: LongInt; Otm: Array [1..m] Of Integer End; Var Vedom: Array [1..Nmax] Of Stud; i,j: Integer; kdv,k2,n: Integer; Begin Writeln(’Введите количество студентов’); Readln(n); Writeln(’Вводите информацию о каждом студенте’); For i:=1 to n Do Begin Write(’Фамилия: ’); ReadLn(Vedom[i].Fam); Write(’Имя: ’); ReadLn(Vedom[i].Im); Write(’Отчество: ’); ReadLn(Vedom[i].Ot); Write(’Номер зачетки: ’); ReadLn(Vedom[i].Numz); WriteLn(’Вводите оценки по одной:’); For j:= 1 to m do Begin WriteLn(’Введите ’,j,’ –ю оценку’); ReadLn(Vedom[i].Otm[j]); End; End; kdv:= 0; Writeln(’Фамилии и номера зачеток двоечников’); For i:=1 to n Do Begin k2:= 0; For j:= 1 to m Do If Vedom[i].Otm[j] < 3 Then k2:= k2+1; If k2 > 0 Then Begin kdv:= kdv + 1; Writeln(Vedom[i].Fam:16,Vedom[i].Numz:8) End; End; Writeln(’Количество двоечников в группе - ’,kdv); WriteLn(’Нажмите Enter...’); ReadLn; End.
Пример 9.6 Сформировать и вывести на экран файл, представляющий собой ведомость успеваемости студентов 1 курса ФИиТ. Данные об одном студенте имеют структуру вида: Фамилия, Имя, Отчество, номер зачетки, оценки по 5 предметам. Количество студентов (n) и сведения о них вводятся с клавиатуры. Программа для решения поставленной задачи может быть такой. Program Sozd_Fil; Const M=5; { Количество оценок } Type Stud=Record Fam, Im, Ot: String[10]; NumZ: LongInt; Otm: Array[1..M] Of Integer; End; Var Vedom: File Of Stud; A: Stud; FilName: String; { имя набора данных } j,i,n: Integer; Begin Writeln(’Введите имя набора данных’); Readln(FilName); Assign(Vedom,FilName); Rewrite(Vedom); {Открытие файла для записи} Writeln(’Введите количество студентов’); Readln(n); Writeln (’Вводите сведения о каждом студенте’); For i:=1 to n do Begin With A do Begin Write(’Фамилия: ’); ReadLn(Fam); Write(’Имя: ’); ReadLn(Im); Write(’Отчество: ’); ReadLn(Ot); Write(’Номер зачетки: ’); ReadLn(Numz); WriteLn(’Введите оценки по одной:’); For J:= 1 to 5 do Begin WriteLn(’Введите ’,J,’ -ю оценку’); ReadLn(Otm[j]); End; End; Write(Vedom,A); {Запись в файл переписывается целиком} End; Close(Vedom); Writeln (’Конец работы. Нажмите клавишу ENTER’); ReadLn; End. Пример 9.7 Вывести на экран сведения о неуспевающих студентах из файла Vedom предыдущего примера. Соответствующая программа будет иметь следующий вид. Program Count_2; Const M=5; Dl=10; Type Stud = Record Fam, Im, Ot: String[Dl]; Numz: LongInt; Otm: Array[1..M] Of Integer; End; Var Vedom: File Of Stud; FilName: String;{имя набора данных} A: Stud; i,j,kdv,K2: Integer; Begin Writeln(’Введите имя набора данных’); Readln(FilName); Assign(Vedom,FilName); Reset (Vedom); {открытие файла, 1-я запись - в буфере} kdv:= 0; I:= 0; Writeln(’Список фамилий и номеров зачеток неуспевающих студентов’); While Not Eof(Vedom) Do Begin K2:= 0; Read(Vedom,A); I:= i+1; With A Do Begin For j:= 1 To M Do If Otm[j] < 3 Then K2:= K2+1; If K2 > 0 Then Begin kdv:= kdv+1; Writeln(Fam:15,Numz:8); End; End;{Whith} End;{While} Writeln(’Проверено ’,i,’ студентов.’); Writeln(’Из них неуспевающих ’,kdv,’ человек’); WriteLn(’Нажмите Enter’); Readln; End. Пимер 9.8 Выполнить поиск номера телефона и его владельца по справочнику, сформированному в предыдущем примере. При работе программы должен вводиться номер телефона, и если он есть в справочнике, то на экран должны выдаваться фамилия и адрес его владельца. Если набран неправильный номер, которого в справочнике нет, то необходимо вывести сообщение об этом. Программа будет иметь вид Program PskTel; Type Tel=Record Nom: Integer; Fam,Adr: String[15]; End; Var Ftel: File Of Tel; Rtel: Tel; Num: Integer; S: Char; Begin Assign (Ftel,’tsprav’); Reset (Ftel); { Открытие файла для чтения} Repeat {Поиск фамилии и адреса абонента по номеру} Write(’Введите номер телефона: ’); ReadLn(Num); Seek(Ftel,Num); If Not Eof (Ftel) Then Begin Read (ftel,Rtel); With Rtel do Writeln(’Фамилия: ’,fam:15, ’ Адрес: ’, End Else Writeln(’Неправильный номер’); Writeln (’Продолжаем?-Д/Н, Y/N’); Readln (S); Until (S=’H’) Or (S=’н’) Or (S=’n’) Or (S=’N’); Writeln (’Конец работы. Нажмите клавишу ENTER’); Readln; End. Пример 9.9 Коррекция телефонного справочника ("Tsprav"), например изменение фамилии абонента. Обычно при коррекции сначала просматривают содержимое записи, а потом, если необходимо, изменяют его. Program Updtel; Type Tel=Record Nom: Integer; Fam,Adr: String[15]; End; Var Ftel: File Of Tel; Rtel: Tel; K,Num: Integer; S: Char; Begin Assign(Ftel,’Tsprav’); Reset(Ftel); { Открытие файла } Repeat {Поиск фамилии и адреса абонента по номеру телефона} Write(’Введите номер телефона: ’); ReadLn(k);
Seek(Ftel,k); If Not Eof(Ftel) then Begin Read(Ftel,Rtel); With Rtel do Write (’Фамилия: ’,fam,’ Адрес: ’,Adr); Writeln(’Будем менять фамилию?-Д/Н Y/N’); Readln(S); If (S=’Д’) (S=’д’) Or (S=’Y’) Or (S=’y’) then Begin Writeln(’Введите фамилию’); Read (Rtel.fam); Seek (Ftel,k); Write(Ftel,Rtel); end; End Else Writeln (’Неправильный номер’); Writeln (’Продолжаем?-Д/Н Y/N’); Readln(S); Until (S=’H’) Or (S=’н’) Or (S=’n’) Or (S=’N’); Writeln (’Конец работы, нажмите клавишу Enter’); Readln; End. Пример 9.10 Набор данных, имя которого задается с клавиатуры, содержит информацию о компьютерах. Запись о компьютере имеет вид Марка, Цена. Упорядочить записи в наборе по возрастанию цены. Program Sort_File; Type Computer=Record Marka: String[10]; Cena: Integer; End; Var FilComp: File of Computer; Comp1,Comp2: Computer; K: Integer; Perest: Boolean; { Признак перестановок } FilName: String; { Имя набора данных} Begin Writeln(’Введите имя набора данных’); Readln(FilName); Assign(Filan,FilName); { Упорядочение } Perest:= True;{ Перестановки будут } While Perest do Begin Perest:= False; {Перестановок еще не было} K:= 0; Reset(FilComp); {Открытие файла} While Not Eof(FilComp) do Begin Seek(FilComp,k); Read(FilComp,Comp1); If Not Eof(FilComp) then Begin Read(FilComp,Comp2); If Comp1.Cena>Comp2.Cena then Begin {Перестановка начинается} Seek(FilComp,k); Write(FilComp,Comp2); Write(FilComp,Comp1); Perest:=True; {Перестановка} End; End; k:=k+1; End; Close(FilComp); End; Writeln(’Конец работы, нажмите клавишу Enter’); Readln; End.
|
||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-17; просмотров: 214; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.248.61 (0.009 с.) |