Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 19.02.2014, 10:19   #11 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Тетрадь Посмотреть сообщение
Спасибо, вы использовали процедуру файл? просто мы еще не изучили, и такую задачу не примут
Сочувствую. Ну так распишите присвоение значений полей записей с консоли либо в явном виде. А лучше скажите преподавателю, что самостоятельно освоили файловые операции. И освойте.
Впрочем, подозреваю, что препод Вам всё равно не поверит, а потому - вот вариант (редкостно тупой) без файла:
Код:
Type
 Prod=Record
       N:Byte;
       Num,Prime,Price,Work:Integer;
       Productivity_Local:Real;
      End;

Var
 Prd:Array[1..20] of Prod;
 Bad:Set of Byte;
 Productivity_Initial,Min,Max,Productivity_Current:Real;
 i,Im,k:Integer;

Function Productivity:Real;
var
 j:Integer;
 Sum,Sum_Work:Real;
begin
 Sum:=0;
 Sum_Work:=0;
 for j:=1 to 20 do
  with Prd[j] do
   If Not(N in Bad) then
    begin
     Sum:=Sum+(Price-Prime)*Num;
     Sum_Work:=Sum_Work+Work;
    end;
 Productivity:=Sum/Sum_Work;
end;

Begin
 Bad:=[];
 Prd[ 1].N:= 1; Prd[ 1].Num:=  30; Prd[ 1].Prime:= 120; Prd[ 1].Price:=190; Prd[ 1].Work:=  5;
 Prd[ 2].N:= 2; Prd[ 2].Num:= 110; Prd[ 2].Prime:= 333; Prd[ 2].Price:=578; Prd[ 2].Work:= 25;
 Prd[ 3].N:= 3; Prd[ 3].Num:=  65; Prd[ 3].Prime:=  99; Prd[ 3].Price:=181; Prd[ 3].Work:= 12;
 Prd[ 4].N:= 4; Prd[ 4].Num:= 770; Prd[ 4].Prime:=   6; Prd[ 4].Price:= 14; Prd[ 4].Work:= 10;
 Prd[ 5].N:= 5; Prd[ 5].Num:= 490; Prd[ 5].Prime:= 146; Prd[ 5].Price:=239; Prd[ 5].Work:= 58;
 Prd[ 6].N:= 6; Prd[ 6].Num:= 200; Prd[ 6].Prime:=  33; Prd[ 6].Price:= 57; Prd[ 6].Work:= 37;
 Prd[ 7].N:= 7; Prd[ 7].Num:=  44; Prd[ 7].Prime:=  56; Prd[ 7].Price:= 79; Prd[ 7].Work:= 95;
 Prd[ 8].N:= 8; Prd[ 8].Num:= 410; Prd[ 8].Prime:=  11; Prd[ 8].Price:= 17; Prd[ 8].Work:= 28;
 Prd[ 9].N:= 9; Prd[ 9].Num:= 690; Prd[ 9].Prime:=   7; Prd[ 9].Price:= 12; Prd[ 9].Work:= 55;
 Prd[10].N:=10; Prd[10].Num:= 990; Prd[10].Prime:= 281; Prd[10].Price:=346; Prd[10].Work:= 48;
 Prd[11].N:=11; Prd[11].Num:=   3; Prd[11].Prime:=   4; Prd[11].Price:=  7; Prd[11].Work:= 98;
 Prd[12].N:=12; Prd[12].Num:=  77; Prd[12].Prime:=  19; Prd[12].Price:= 25; Prd[12].Work:= 45;
 Prd[13].N:=13; Prd[13].Num:=  50; Prd[13].Prime:= 267; Prd[13].Price:=321; Prd[13].Work:= 62;
 Prd[14].N:=14; Prd[14].Num:= 550; Prd[14].Prime:=  17; Prd[14].Price:= 29; Prd[14].Work:= 22;
 Prd[15].N:=15; Prd[15].Num:=   8; Prd[15].Prime:= 270; Prd[15].Price:=320; Prd[15].Work:= 45;
 Prd[16].N:=16; Prd[16].Num:=  14; Prd[16].Prime:=  68; Prd[16].Price:= 93; Prd[16].Work:= 72;
 Prd[17].N:=17; Prd[17].Num:= 340; Prd[17].Prime:=  10; Prd[17].Price:= 28; Prd[17].Work:=  5;
 Prd[18].N:=18; Prd[18].Num:= 870; Prd[18].Prime:=   2; Prd[18].Price:=  4; Prd[18].Work:= 11;
 Prd[19].N:=19; Prd[19].Num:=  20; Prd[19].Prime:=  65; Prd[19].Price:= 83; Prd[19].Work:= 17;
 Prd[20].N:=20; Prd[20].Num:= 390; Prd[20].Prime:=   7; Prd[20].Price:= 10; Prd[20].Work:= 50;
 For i:=1 to 20 do
  with Prd[i] do
   Productivity_Local:=(Price-Prime)*Num/Work;
 Productivity_Initial:=Productivity;
 Max:=Prd[1].Productivity_Local;
 For i:=2 to 20 do
  If Prd[i].Productivity_Local>Max then Max:=Prd[i].Productivity_Local;
 k:=0;
 Repeat
  Inc(k);
  Min:=Max;
  For i:=1 to 20 do
   If Not(i in Bad) and (Prd[i].Productivity_Local<Min) then
    begin
     Min:=Prd[i].Productivity_Local;
     Im:=i;
    end;
  Bad:=Bad+[Im];
  Productivity_Current:=Productivity;
 Until (Productivity_Current>=Productivity_Initial*2) or (k=20);
 Write('The plant must refuse from the positions:');
 For i:=1 to 20 do
  if i in Bad then Write(i:3);
 Writeln;
 Writeln('Inial productivity: ',Productivity_Initial:0:3);
 Writeln('Final productivity: ',Productivity_Current:0:3);
 Readln;
End.
Интересно, что будет следующим номером программы? "Мы множества не проходили!"?
Vladimir_S вне форума   Ответить с цитированием

Старый 19.02.2014, 10:19
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Проблемы часто повторяются и ваша не исключение, вот схожие темы

Задача на Паскаль, одномерный массив
Задача на Паскале про массив
Задача на массив в С++

Старый 19.02.2014, 16:41   #12 (permalink)
Тетрадь
Member
 
Регистрация: 16.11.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

, только записи или массив
Тетрадь вне форума   Ответить с цитированием
Старый 19.02.2014, 16:50   #13 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Тетрадь Посмотреть сообщение
, только записи или массив
То есть я правильно угадал - множества тоже низззззззззя? А тип boolean можно?
Vladimir_S вне форума   Ответить с цитированием
Старый 19.02.2014, 17:02   #14 (permalink)
Тетрадь
Member
 
Регистрация: 16.11.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

можно boolean
Тетрадь вне форума   Ответить с цитированием
Старый 19.02.2014, 17:26   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Тетрадь Посмотреть сообщение
можно boolean
И на том спасибо. В общем, была программка компактная и прозрачная, стала разлапистая, тупая и непонятная. Но работает. Сами захотели.
Код:
Type
 Prod=Record
       N:Byte;
       Num,Prime,Price,Work:Integer;
       Productivity_Local:Real;
      End;

Var
 Prd:Array[1..20] of Prod;
 Bad:Array[1..20] of Byte;
 Productivity_Initial,Min,Max,Productivity_Current:Real;
 i,m,Im,k:Integer;
 b:boolean;

Function Productivity:Real;
var
 j,p:Integer;
 Sum,Sum_Work:Real;
 b1:boolean;
begin
 Sum:=0;
 Sum_Work:=0;
 for j:=1 to 20 do
  begin
   b1:=true;
   for p:=1 to 20 do
    if j=Bad[p] then b1:=false;
   If b1 then
    with Prd[j] do
     begin
      Sum:=Sum+(Price-Prime)*Num;
      Sum_Work:=Sum_Work+Work;
     end;
  end;
 Productivity:=Sum/Sum_Work;
end;

Begin
 for m:=1 to 20 do Bad[m]:=0;
 Prd[ 1].N:= 1; Prd[ 1].Num:=  30; Prd[ 1].Prime:= 120; Prd[ 1].Price:=190; Prd[ 1].Work:=  5;
 Prd[ 2].N:= 2; Prd[ 2].Num:= 110; Prd[ 2].Prime:= 333; Prd[ 2].Price:=578; Prd[ 2].Work:= 25;
 Prd[ 3].N:= 3; Prd[ 3].Num:=  65; Prd[ 3].Prime:=  99; Prd[ 3].Price:=181; Prd[ 3].Work:= 12;
 Prd[ 4].N:= 4; Prd[ 4].Num:= 770; Prd[ 4].Prime:=   6; Prd[ 4].Price:= 14; Prd[ 4].Work:= 10;
 Prd[ 5].N:= 5; Prd[ 5].Num:= 490; Prd[ 5].Prime:= 146; Prd[ 5].Price:=239; Prd[ 5].Work:= 58;
 Prd[ 6].N:= 6; Prd[ 6].Num:= 200; Prd[ 6].Prime:=  33; Prd[ 6].Price:= 57; Prd[ 6].Work:= 37;
 Prd[ 7].N:= 7; Prd[ 7].Num:=  44; Prd[ 7].Prime:=  56; Prd[ 7].Price:= 79; Prd[ 7].Work:= 95;
 Prd[ 8].N:= 8; Prd[ 8].Num:= 410; Prd[ 8].Prime:=  11; Prd[ 8].Price:= 17; Prd[ 8].Work:= 28;
 Prd[ 9].N:= 9; Prd[ 9].Num:= 690; Prd[ 9].Prime:=   7; Prd[ 9].Price:= 12; Prd[ 9].Work:= 55;
 Prd[10].N:=10; Prd[10].Num:= 990; Prd[10].Prime:= 281; Prd[10].Price:=346; Prd[10].Work:= 48;
 Prd[11].N:=11; Prd[11].Num:=   3; Prd[11].Prime:=   4; Prd[11].Price:=  7; Prd[11].Work:= 98;
 Prd[12].N:=12; Prd[12].Num:=  77; Prd[12].Prime:=  19; Prd[12].Price:= 25; Prd[12].Work:= 45;
 Prd[13].N:=13; Prd[13].Num:=  50; Prd[13].Prime:= 267; Prd[13].Price:=321; Prd[13].Work:= 62;
 Prd[14].N:=14; Prd[14].Num:= 550; Prd[14].Prime:=  17; Prd[14].Price:= 29; Prd[14].Work:= 22;
 Prd[15].N:=15; Prd[15].Num:=   8; Prd[15].Prime:= 270; Prd[15].Price:=320; Prd[15].Work:= 45;
 Prd[16].N:=16; Prd[16].Num:=  14; Prd[16].Prime:=  68; Prd[16].Price:= 93; Prd[16].Work:= 72;
 Prd[17].N:=17; Prd[17].Num:= 340; Prd[17].Prime:=  10; Prd[17].Price:= 28; Prd[17].Work:=  5;
 Prd[18].N:=18; Prd[18].Num:= 870; Prd[18].Prime:=   2; Prd[18].Price:=  4; Prd[18].Work:= 11;
 Prd[19].N:=19; Prd[19].Num:=  20; Prd[19].Prime:=  65; Prd[19].Price:= 83; Prd[19].Work:= 17;
 Prd[20].N:=20; Prd[20].Num:= 390; Prd[20].Prime:=   7; Prd[20].Price:= 10; Prd[20].Work:= 50;
 For i:=1 to 20 do
  with Prd[i] do
   Productivity_Local:=(Price-Prime)*Num/Work;
 Productivity_Initial:=Productivity;
 Max:=Prd[1].Productivity_Local;
 For i:=2 to 20 do
  If Prd[i].Productivity_Local>Max then Max:=Prd[i].Productivity_Local;
 k:=0;
 Repeat
  Inc(k);
  Min:=Max;
  For i:=1 to 20 do
   begin
    b:=true;
    for m:=1 to 20 do
     if i=Bad[m] then b:=false;
    If b and (Prd[i].Productivity_Local<Min) then
    begin
     Min:=Prd[i].Productivity_Local;
     Im:=i;
    end;
   end;
  m:=0;
  Repeat Inc(m) Until (Bad[m]=0) or (m=20);
  If Bad[m]=0 then Bad[m]:=Im;
  Productivity_Current:=Productivity;
 Until (Productivity_Current>=Productivity_Initial*2) or (k=20);
 Write('The plant must refuse from the positions:');
 For i:=1 to k do Write(Bad[i]:3);
 Writeln;
 Writeln('Inial productivity: ',Productivity_Initial:0:3);
 Writeln('Final productivity: ',Productivity_Current:0:3);
 Readln;
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 19.02.2014, 18:12   #16 (permalink)
Тетрадь
Member
 
Регистрация: 16.11.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо
Тетрадь вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 01:55.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.