русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Программа записи в языке Паскаль

Задание

Дана структура ведомости заработной платы бригады за неделю. Составить программу вывода на печать фамилий членов бригады, которые имеют заработную плату выше средней. Считать количество членов в бригаде 5 человек.

Теоретический материал

Записи – набор разнотипних данних, которые имеют одинаковое имя.
Записи объявляются так:

Type t=record
Fio:string;
Bal: byte;
End;
Var mas:array [1..n] of t;

Чтобы обратиться к полю таблицы нужно после имени сроки поставить точку и указать имя клеточки: MAS[2].fio Для облегчения работы используется оператор With ...do:

With  a[i] do
            Begin
            Write (fio);
            Write (bal);
            End;

Выбор алгоритма решения задачи

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

Описание решения задачи

Объявляем четыре процедуры:
procedure vvod(var xt:tt); forward;
procedure Sred_sum (var st:tt); forward;
procedure Print_best(var pt:tt); forward;
procedure vivod(var vt:tt); forward;

Процедура вводу является стандартной, то есть через readln мы вносим значение в таблицу. В процедуре Sred_sum мы подсчитываем сумму денег и сумму часов и находим их часть. Таким образом получаем среднюю заработную плату за 1 час. Процедура Print_best выводит на печать всех рабочих, которые имеют заработную плату больше чем средняя. Процедура вывода выводит таблицу, которую мы заполнили.

Схема алгоритма решения задачи

1 Основная программа

2 Процедура вывода

3 Процедура средней заработной платы

4 Процедура печати работников

Текст программы

program lab;
uses crt,printer;
const n=5;
type
    tz=record
      NN:byte;
      fio:string[40];
      all:record
         Prof:string[20];
         Info:record
            day:record
               time:array[1..n] of byte;
               money:array[1..n] of byte;
                end;
            end;
         info_week:real;
         end;
      sr_all:real;
      sr_one:real;
      end;
    tt=array [1..n] of tz;
var
   t:tt;
procedure vvod(var xt:tt); forward;
procedure Sred_sum(var st:tt); forward;
procedure Print_best(var pt:tt); forward;
procedure vivod(var vt:tt); forward;
procedure vvod;
var
   i,j:byte;
  begin
       textcolor(2);
       for i:=1 to n do begin
           writeln('vvedite nomer,FIO,profesiu,time,zarplata v day');
           with xt[i] do begin
                readln(NN);
                readln(fio);
                readln(all.prof);
                for j:=1 to n do begin
                    readln(all.info.day.time[j]);
                    readln(all.info.day.money[j]);
                    end;
                end;
       end;
  end;
procedure Sred_sum;
var
  s,s1,sum:real;
  i,j,s_money:byte;
  begin
       s:=0;
       for i:=1 to n do begin
           s1:=0;
           s_money:=0;
           for j:=1 to n do begin
               sum:=st[i].all.info.day.money[j]/st[i].all.info.day.time[j];
               s1:=s1+sum;
               s_money:=s_money+st[i].all.info.day.money[j]
               end;
           st[i].sr_one:=s1/n;
           s:=s+st[i].sr_one;
           st[i].all.info_week:=s_money;
       end;
       st[1].sr_all:=s/n;
  end;
procedure Print_best;
var
   i:byte;
   begin
        for i:=1 to n do
        if pt[1].sr_all<pt[i].sr_one  then begin
        writeln(pt[i].NN,'.',pt[i].fio,'imeet zarplaty vushe sredney');
        end;
   end;
procedure vivod;
var
   i,j:byte;
 begin
 textcolor(4);
 writeln('--------------------------------------------------------');
 writeln('|# | FIO  |Vedomoct'' zarplati brigadi za week         |');
 writeln('|  |               |-----------------------------------|');
 writeln('|  |   |profesiya|     WORK                  |sr.work|');
 writeln('|  |     |    |--------------------------------|       |');
 writeln('|  |          |      |1day|2day|3day|4day|5 day|       |');
 writeln('|----------------------------------------------|       |');
   for i:=1 to n do
    with vt[i] do begin
      write('|',NN:2,'| ',FIO:13,' |',all.prof:9,'| ');
      for j:=1 to n do
      with all.info.day do
      write(time[j]:2,'|',money[j]:3,'|');
      writeln(all.info_week:3:2,' |');
      writeln('---------------------------------------------------');
    textcolor(4);
 end;
 end;
{osnovnaya programma}
BEGIN
 clrscr;
  vvod(t);
  Sred_sum(t);
  vivod(t);
  Print_best(t);
  readln;
END.

Результат работы программы

----------------------------------------------------------------------------------------
|#|    FIO                 |               Vedomoct' zarplati brigadi za week                             |
|  |                          |----------------------------------------------------------------|
|  |                          | profes.  |             WORK                                   |  week.work  |
|  |                          |            |----------------------------------------|                  |
|  |                          |            | 1 day | 2 day| 3 day| 4 day| 5 day|                         |
|------------------------------------------------------------------------|                 |
| 1|        Ivanov        |     elek  |  8 | 40 | 8 | 34 | 10| 50| 7| 30| 8 | 46 |     200.00     |
--------------------------------------------------------------------------------------
| 2|       Sidorov        |    progr |  8 | 50 | 8 | 60 | 12|120| 8 | 60|14|150|     440.00     |
--------------------------------------------------------------------------------------
| 3|   Pomanovskiy     | buhgal  |  8 | 60 | 9 | 60 | 7  | 45 | 8| 65| 8 |100|      330.00    |
--------------------------------------------------------------------------------------
| 4|     Gerasimov      |    progr |  8 |120| 8 |150 | 8 |200| 8|120|12 |250|      840.00    |
--------------------------------------------------------------------------------------
| 5|         Repka       |     work |  8 | 40 |12| 60  |14 | 80| 8| 35 | 8 | 50 |      262.00    |
--------------------------------------------------------------------------------------
4. Gerasimov imeet zarplaty vushe sredney

Просмотров: 10207

Вернуться воглавление




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.