Пример выполнения задания

Пусть, например, имеются некоторые данные о заводах города, сведенные в следующий документ:

Наиме-нование завода

Основные сведения

Примечание

Зани-маемая площадь

Объем выпускаемой продукции

Количество обслуживающего персонала

по плану фактически с высшим образованием со средним образованием
АЗЛК 800 484,9 484,9 282 204  
ВАЗ 396 348,5 348,7 130 669  
ЗИЛ 203 384,3 399,4 448 125  
ИЖ 544 667,3 701,3 396 157  
ИТОГО            

Необходимо описать массив записей, содержащий данную информацию, произвести расчет и заполнить итоговую строку, а результат отпечатать.

Для решения данной задачи следует обеспечить ввод массива записей, эхо–печать введенных данных, накопления суммы по каждому полю записи для формирования итоговой строки таблицы и вывод полученного результата. 

Схема алгоритма в общем виде представлена на рис. 6.1.

Начало
Ввод n
i = 1, n
Ввод i – ой записи
Вывод таблицы
Обнуление сумм
i = 1, n
Вывод итоговой строки
Конец
Накопление сумм

Рис. 6.1. Схема алгоритма обработки записей.


 

Текст программы будет иметь следующий вид:

{Цель: обработка массива записей                                                            }

{Переменные:Nmax - максимальное число записей                        }

{Summary-массив записей, plant-строка записи                                        }

{name-наименование завода, information-основные сведения         }

{area-площадь завода, production-объём продукции, plan- по плану }

{fact-фактически, person-обслуживающий персонал                                }

{superior-с высшим образованием, second-со средним образованием    }

{note-примечание                                                                              }

{n - вводимое число записей                                                         } 

{i - номер текущей записи                                                             }

{k - параметр цикла,                                                                                 }

{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;

s1,s4,s5,i,k,n:integer;

s2,s3:real;

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

                  write('занимаемая площадь');

                  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,'основные сведения':33,'|':18,'|':13);

 write('|','|':15);

 for k:=1 to 50 do

write('_');

 write('|','|':13);

 writeln('|','Наименование |':15,'PL |':10,

'Объем продукции':18,'|':4,'Персонал':13,'|':6,'Примечание|':13);

 write('|','|':15,'|':10);

 for k:=1 to 40 do

write('_');

 write('|','|':13);

 writeln('|','|':15,'|':10,'по плану|':11,'факт.':7,'|':4,

'высшее |':9,'среднее|':10,'|':13);

 for k:=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:8:1,'|':2,

          information.production.fact:9:1,'|':2,

          information.person.superior:7,'|':2,

          information.person.second:8,'|':2,

          note,' ':12-Length(note),'|');

for k:=1 to 80 do

  write('_');

  writeln;

end;

{формирование и вывод итоговой строки}

 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:8:1,'|':2,s3:9:1,'|':2,s4:7,'|':2,s5:8,'|':2,'|':13);

end;

 for k:=1 to 80 do

write('_');

 writeln;

end.{example}




ТЕКСТОВЫЕ ФАЙЛЫ

Подготовка к работе

По указанной литературе и методическим указаниям к данной работе изучить порядок работы. Ответить на контрольные вопросы.

Контрольные вопросы

1. Что такое файл? Для каких целей используются файлы?

2. Каковы требования к именам файлов?

3. Назовите общие и отличительные черты текстовых, типизированных и нетипизированных файлов.

4. Зачем используется специальная файловая переменная? Как устанавливается соответствие файловой переменной файлу во внешней памяти?

5. Что общего у процедуры Reset и Rewrite и чем они отличаются?

6. Зачем применяется процедура Close?

7. Для каких целей используется специальная функция IOresult? Каковы условия её применения? Назначение директивы компилятора {$I+},{$I-}.

8. В чём заключается специфика текстовых файлов? Назначение процедуры Append. Отличительные особенности процедур  Read и Write от Readln и Writeln. 

Задание для индивидуальной работы

Вариант 1.

Определить является ли последовательность символов находящаяся в текстовом файле, идентификатором.

Вариант 2.

Подсчитать количество сдвоенных символов ‘cc’, ‘нн’, ‘лл ’в тексте, расположенном в текстовом файле.

Вариант 3.

Разбить произвольный текст, находящийся в файле на строки определенной длины. При переносе слова предусмотреть вывод дефиса.

Вариант 4.

Подсчитать число слов в предложении, записанном в текстовом файле.

Вариант 5.

Найти в текстовом файле самое длинное и самое короткое слово.

Вариант 6.

Из строки, расположенной в текстовом файле, исключить все символы, входящие в нее более одного раза.

Вариант 7.

Проверить, правильно ли расставлены в тексте, расположенном в текстовом файле, круглые скобки.

Вариант 8.

В последовательности символов, заданной в текстовом файле, подсчитать общее количество символов ‘+’, ‘–‘, ‘*’.

Вариант 9.

Слова текста, расположенного в текстовом файле, вывести на экран в виде строки и в виде столбика.

Вариант 10.

В текстовом файле, в предложении, содержащем не менее двух слов, поменять местами первое и последнее слово.

Вариант 11.

В текстовом файле две строки текста. Необходимо сформировать третью строку, состоящую из символов, входящих одновременно в обе исходные строки, и дописать ее в текстовый файл.

Вариант 12.

Откорректировать текст, расположенный в текстовом файле, заменив в нем все вхождения одной буквы на другую.

Вариант 13.

Переписать текстовый файл таким образом, чтобы все слова исходного текста были перевернуты.

Вариант 14.

В произвольный текстовый файл добавить в конец первое и третье слово из исходного текста.

Вариант 15.

В произвольный текстовый файл добавить в конец свою фамилию.

Вариант 16.

В исходном текстовом файле X заменить все вхождения подстроки Р на подстроку Q.

Вариант 17.

Для заданного символа определить, сколько раз он встречается во введенном тексте файла.

Вариант 18.

Из текста, расположенного в файле, исключить группы символов, расположенных между круглыми скобками.

Вариант 19.

Из текста, расположенного в файле, исключить однобуквенные слова. Результат записать в другой файл.

Вариант 20.

Из текста, расположенного в файле, удалить лишние пробелы, разделяющие слова.

Вариант 21.

Выяснить, верно ли, что среди символов строки произвольной длины, расположенной в файле, имеются вес символы, входящие в слово ДЕНЬ.

Вариант 22.

Для каждого из слов предложения, расположенного в одном текстовом файле, указать, сколько раз оно встречается в предложении, расположенном в другом текстовом файле.

Вариант 23.

В произвольном текстовом файле исключить первое и последнее слово.

Вариант 24.

Определить, можно ли из символов заданной в файле строки составить вашу фамилию.

Вариант 25.

Из произвольной последовательности символов, расположенной в текстовом файле, исключить специальные символы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: