Выведите списки цехов с соотношением рабочих и ИТР - 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.

Объяснение кода листинга программы

  1. В первой строке кода используется библиотека crt, которая предоставляет функции для работы с файлами.
  2. Задается тип данных zap, который представляет собой запись с полями: shifr (строка), fam (строка), name (строка), otch (строка), naswanie (строка), god (целое число).
  3. Определяются переменные a (текстовый файл), mas (массив записей типа zap), i (целое число), First (первая переменная), Last (последняя переменная), adr (целое число).
  4. Открывается файл 'RUR.txt' с помощью функции assign.
  5. С помощью функции reset сбрасывается буфер чтения.
  6. Инициализируется переменная i значением 1.
  7. В цикле While не происходит ошибки EOF (конец файла) происходит чтение следующих строк из файла в массив mas.
  8. После окончания чтения закрывается файл с помощью функции Close.
  9. Выводится заголовок 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
  10. Выводится заголовок 'линейный поиск'.
  11. Задаются границы цикла For от 1 до 10.
  12. В цикле выполняется проверка условия if: если год записи меньше 1960, то выводится запись в формате 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
  13. Если год записи больше 1960, то цикл прерывается с помощью оператора break.
  14. Выводится заголовок 'двоичный поиск'.
  15. Задаются границы цикла For от 1 до First.
  16. В цикле выполняется вычисление среднего значения границ цикла с помощью оператора div.
  17. Если среднее значение меньше 1, то переменная First присваивается значению adr.
  18. Если среднее значение больше 1, то цикл прерывается с помощью оператора break.
  19. Для каждой записи в массиве mas выводится информация в формате 'Шифр книги:10, Фамилия:10, Имя:10, Отчество:16, Название:16, Год:11'.
  20. Цикл For завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы