Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2014, 20:00   #1
Руслан56
Пользователь
 
Регистрация: 07.10.2013
Сообщений: 30
По умолчанию Помогите доработать программу. Паскаль

Код:
program pro1;
uses ob,obrabotki;
begin
writeln();
vvod(sd);
podschet(sd);
sort(sd);
vivod(sd);
raznoe(sd);
konechny(sd);
 
end.
Код:
unit obrabotki;
 
interface
uses ob;
 
implementation
 
procedure vvod(var sd:product);
var
 i: integer;
begin
 for i := 1 to maxk do begin
  Sd[i].name:=(i);
  sd[i].kol := random(6) + 5;
  sd[i].sebest := random(500) + 200;
  sd[i].cena := random(1000) + 300;
  sd[i].work := random(20) + 5;
 end;
end;
 
procedure vivod(sd:product);
var
 i: integer;
begin
writeln('---------------------------------------------------------------');
writeln('|','Товар':5,'|','Eдиницы':5,'|','Себестоимость':10,'|','Цена':5,'|','Рабочие':9,'|','Производительность':10,'|');
writeln('---------------------------------------------------------------');
for i:=1 to maxk do writeln('|',sd[i].name:4, '', sd[i].kol:6, '      ', sd[i].sebest, '           ', sd[i].cena, '      ', sd[i].work,'  | ' ,sd[i].proiz,'|');
writeln('---------------------------------------------------------------');
end;
 
procedure podschet(var sd: product);
var
 i: integer;
begin
 for i := 1 to maxk do begin
    sd[i].dohod:=abs(sd[i].kol * sd[i].cena-sd[i].kol * sd[i].sebest);
    sd[i].proiz:=sd[i].dohod / sd[i].work;
 end;
end;
 
function proizob(sd:product; d:integer): real;
var
 i, count: integer;
begin
 result := 0;
 for i := d to maxk do
     result := result + sd[i].proiz;
  result := result / (maxk-(d-1));
end;
 
function pervelem(sd: product): integer;
var
 i: integer;
 flag: boolean;
begin
 flag := false;
 i := 1;
 while (i <= maxk) or not flag  do begin
   result := i;
   flag := true;
  end;
  inc(i);
 end;
 
 
function minsort(sd: product): integer;
var
 i: integer;
 min: real;
begin
 min := sd[pervelem(sd)].proiz;
 
 for i := 1 to maxk do
   if sd[i].proiz < min then begin
    result := i;
    min := sd[i].proiz;
   end;
end;
 
procedure sort(var sd:product);
var
 i, j: integer;
 temp: tovar;
begin
 for j := 1 to maxk do
  for i := 1 to maxk - 1 do
   if (sd[i].proiz > sd[i + 1].proiz) then begin
     temp := sd[i];
     sd[i] := sd[i + 1];
     sd[i + 1] := temp;
   end;
end;
 
procedure raznoe(var sd:product);
var
 i: integer;
 flag: boolean;
begin
 flag := false;
 i := maxk;
 fp := proizob(sd,d);
 while ((not flag) and (i > 1)) do begin
  sd[minsort(sd)].field := true;
  if (fp * 2 <= proizob(sd)) then flag := true;
  dec(i);
 end;
end;
 
procedure konechny(sd:product);
var
 i: integer;
begin
 writeln('------------------------------');
 writeln('Производительность до: ', fp);
 writeln('Производительность после: ', proizob(sd));
 writeln('------------------------------');
 for i := 1 to maxk do begin
  if sd[i].field then write(Sd[i].name, ' ');
 end;
end;
 
end.
Код:
unit ob;
interface
const maxk=3;
 
type
tovar = record
name : integer;
kol  : integer;
sebest:real;
cena :real;
work :integer;
dohod:real;
proiz:real;
field:boolean;
end;
 
 
type
 product = array[1..maxk] of tovar;
var
    fp:real;
    sd:product;
 
 implementation
 end.
Сама задача:Завод выпускает 20 наименований продукции. Про каждый вид продукции известно: сколько единиц этой продукции выпускает завод, себестоимость и отпускная цена единицы продукции, сколько человек занято на выпуске этой продукции. От каких видов продукции завод должен отказаться, чтобы общая производительность труда повысилась вдвое? ({производительность труда} = {доход от продажи продукции} / {количество человек, принимающих участие в ее производстве}).

Программа не работает, не могу разобраться в чем. Может кто сможет помочь. Может кто поможет отредактировать процедуру общего подсчета производительности function proizob(sdroduct; d:integer): real;

Последний раз редактировалось Руслан56; 11.03.2014 в 20:11.
Руслан56 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите доработать программу на ассемлере: Программа выводит шестнадцатеричные числа в двоичном виде. Nickolay0512 Помощь студентам 0 04.12.2013 11:54
Помогите доработать программу, заполнить массив случайными значениями . serg.malkow2014 Помощь студентам 2 27.11.2013 01:41
доработать программу ehanjaki Помощь студентам 1 12.07.2012 14:37
Необходимо доработать программу "Паскаль" с типизированными файлами, чтобы результат выводило в текстовый документ а не на экран. Женька Good Помощь студентам 0 09.12.2011 21:20