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


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

Завод выпускает 20 наименований продукции. Про каждый вид продукции известно: сколько единиц этой продукции выпускает завод, себестоимость и отпускная цена единицы продукции, сколько человек занято на выпуске этой продукции. От каких видов продукции завод должен отказаться, чтобы общая производительность труда повысилась вдвое? ({производительность труда} = {доход от продажи продукции} / {количество человек, принимающих участие в ее производстве}).

Тема двумерных массивы. Нужно написать эту программу с подпрограммами.
Помогите в написании данной программы. Сам не справлюсь
Тетрадь вне форума   Ответить с цитированием

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

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

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

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

Можете пожалуйста объяснить спаму задачу, последовательность действий, что сначала нужно найти, а что потом?
Тетрадь вне форума   Ответить с цитированием
Старый 16.02.2014, 10:25   #3 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 336
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

Отпускная цена минут себестоимость. Результат умножить на кол-во единиц.
Далее, вычисляем производительность для каждого наименования: Делим получившееся выше на кол-во человек. И создаем массив: наименование и производительность.
Затем высчитываем общую производительность - суммируем производительность всех наименований и делим на 20.
Ну а дальше, думаю, уже понятно
Debianer вне форума   Ответить с цитированием
Старый 16.02.2014, 10:45   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Тетрадь Посмотреть сообщение
Нужно написать эту программу
Абсолютно невозможно! Наши штатные телепаты в отпуске, а без них определить язык программирования, тайну которого Вы, очевидно, поклялись не выдавать даже под пыткой, мы не можем.
Цитата:
Сообщение от Debianer Посмотреть сообщение
Отпускная цена минут себестоимость. Результат умножить на кол-во единиц. Далее, вычисляем производительность для каждого наименования: Делим получившееся выше на кол-во человек. И создаем массив: наименование и производительность. Затем высчитываем общую производительность - суммируем производительность всех наименований и делим на 20. Ну а дальше, думаю, уже понятно
Да, в свете вышесказанного - это максимум того, чем мы можем помочь.
Vladimir_S вне форума   Ответить с цитированием
Старый 16.02.2014, 12:46   #5 (permalink)
Тетрадь
Member
 
Регистрация: 16.11.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Извините Pascal abc
Тетрадь вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 16.02.2014, 16:46   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Могу поковыряться, но при условии, что Вы придумаете все входные данные (наименования, себестоимости и т.д.) и выложите в любом виде.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.02.2014, 19:10   #7 (permalink)
Тетрадь
Member
 
Регистрация: 16.11.2013
Сообщений: 22
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Задачу можно в в виде записей делать. Наименование не нужно, просто 20 деталей, себестоимость и т.д можно взять любые числа.
Тетрадь вне форума   Ответить с цитированием
Старый 17.02.2014, 19:22   #8 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Тетрадь Посмотреть сообщение
Задачу можно в в виде записей делать. Наименование не нужно, просто 20 деталей, себестоимость и т.д можно взять любые числа.
Вообще-то с подобными задачами я посылаю... сюда. Но в Вашей меня заинтересовал алгоритм удвоения суммарной производительности. Ладно, займусь.
Vladimir_S вне форума   Ответить с цитированием
Старый 17.02.2014, 21:02   #9 (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;
 f:Text;
 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:=[];
 Assign(f,'D:\Data.txt');
 Reset(f);
 For i:=1 to 20 do
  with Prd[i] do
   begin
    Readln(f, N,Num,Prime,Price,Work);
    Productivity_Local:=(Price-Prime)*Num/Work;
   end;
 Close(f);
 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.
Несколько пояснений:
1. Исходные данные помещены в файл по имени Data.txt (прилагается). У меня он расположен на диске D, так что поправьте путь в программе, если надо. Колонки: порядковый номер, количество изделий (напр. в год), себестоимость, цена, количество рабочих.
2. Программа писалась и отлаживалась в НОРМАЛЬНОМ Паскале (Free). За глюки этого богомерзкого АВС не отвечаю!
3. Вкратце - алгоритм. В каждой записи вычисляется "локальная" производительность, как доход/кол-во рабочих. При каждом прохождении цикла отсева находится номер записи с минимальным значением "локальной" производительности, этот номер вносится в "черный список" и из нового расчета общей производительности исключается.
Вложения
Тип файла: txt Data.txt (379 байт, 493 просмотров)
Vladimir_S вне форума   Ответить с цитированием
Старый 19.02.2014, 09:50   #10 (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, время: 09:50.

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