Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 211; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.109.121 (0.006 с.) |