Выведите списки цехов с соотношением рабочих и ИТР - Pascal
Формулировка задачи:
Даны шифры цехов,численности рабочих и инженерно-технических работников(ИТР) в каждом.Выведите списки цехов с соотношением рабочих и ИТР более 1,5 и менее 2,и списки,в которых оно более 2.
Решение задачи: «Выведите списки цехов с соотношением рабочих и ИТР»
textual
Листинг программы
uses crt; Type zap=record shifr:string; fam:string; name:string; otch:string; naswanie:string; god:integer; end; Var a:text; mas:array[1..10] of zap; i,First,Last,adr:integer; BEGIN assign(a, 'RUR.txt'); reset(a); i:=1; While not(eof(a)) do begin Readln(a,mas[i].shifr); Readln(a,mas[i].fam); Readln(a,mas[i].name); Readln(a,mas[i].otch); Readln(a,mas[i].naswanie); Readln(a,mas[i].god); Inc(i); end; Close(a); Writeln('Шифр книги':10,'Фамилия':11,'Имя':11,'Отчество':16,'Название':16,'Год':11); Writeln;Writeln('линейный поиск'); For i:=1 to 10 do begin if mas[i].god<1960 then Writeln(mas[i].shifr:10,' ',mas[i].fam:10,' ',mas[i].name:10,' ',mas[i].otch:15,' ',mas[i].naswanie:15,' ',mas[i].god:10); if mas[i].god>1960 then break; end; Writeln;Writeln('двоичный поиск'); First:=1; Last:=10; While First<>Last-1 do Begin adr:=(First+ Last)div 2; if mas[adr].god<1960 then First:=adr else Last:=adr; End; For i:=1 to First do Writeln(mas[i].shifr:10,' ',mas[i].fam:10,' ',mas[i].name:10,' ',mas[i].otch:15,' ',mas[i].naswanie:15,' ',mas[i].god:10); END.
Объяснение кода листинга программы
- В первой строке кода используется библиотека crt, которая предоставляет функции для работы с файлами.
- Задается тип данных zap, который представляет собой запись с полями: shifr (строка), fam (строка), name (строка), otch (строка), naswanie (строка), god (целое число).
- Определяются переменные a (текстовый файл), mas (массив записей типа zap), i (целое число), First (первая переменная), Last (последняя переменная), adr (целое число).
- Открывается файл 'RUR.txt' с помощью функции assign.
- С помощью функции reset сбрасывается буфер чтения.
- Инициализируется переменная i значением 1.
- В цикле While не происходит ошибки EOF (конец файла) происходит чтение следующих строк из файла в массив mas.
- После окончания чтения закрывается файл с помощью функции Close.
- Выводится заголовок 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
- Выводится заголовок 'линейный поиск'.
- Задаются границы цикла For от 1 до 10.
- В цикле выполняется проверка условия if: если год записи меньше 1960, то выводится запись в формате 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
- Если год записи больше 1960, то цикл прерывается с помощью оператора break.
- Выводится заголовок 'двоичный поиск'.
- Задаются границы цикла For от 1 до First.
- В цикле выполняется вычисление среднего значения границ цикла с помощью оператора div.
- Если среднее значение меньше 1, то переменная First присваивается значению adr.
- Если среднее значение больше 1, то цикл прерывается с помощью оператора break.
- Для каждой записи в массиве mas выводится информация в формате 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
- Цикл For завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д