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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 22:31   #1
M_arisha
Пользователь
 
Регистрация: 02.12.2011
Сообщений: 24
По умолчанию Паскаль.Запись.

Есть вот такая вот задачка:

имеется N различных деталей, которые необходимо обработать на одном станке. Каждая деталь характеризуется записью вида
Type
ZAP=record
I, DN, DL : integer;
end;
где I – номер детали; DN -длительность наладки станка (в часах) для обработки I-й детали; DL - длительность обработки 1-й детали на станке (в минутах). Очередность обработки всех N деталей на данном станке хранится в виде массива SP типа int. Сначала обрабатывается деталь с номером SP[1], затем SP[2] и т.д. Суммарное время обработки каждой детали включает время наладки станка и непосредственно время ее обработки. Определить время обработки всей последовательности деталей.


Код:
program pr7;
uses Crt;
Type
zap=record
i,dn,dl:integer;
end;
mass=array[1..100]of integer;
Var
sp:mass;
i,n,dn,dl:byte;
s:integer;
begin
writeln('введите количество деталей');
readln(n);
for i:=1 to n do
read(sp[i]);
writeln('введите время наладки станка для ',i,'-ой детали');
readln(dn);
writeln('введите длительность обработки ',i,'-ой детали');
readln(dl);
if dl<60 then begin
writeln('суммарное время обработки ',i,'-ой детали ',dn,'ч.',dl,' мин.');
if dl=60 then
begin
S:=dn+1;
writeln('суммарное время обработки ',i,'-ой детали ',s,'ч.');end;end
else
if dl>60 then begin
s:=dl mod 60;
                                                                                                  {если здесь ставить,//dn:=dn+dl\60;//то появляется значок($c5),и вопрос как нада сделать правильно}
writeln('суммарное время обработки ',i,'-ой детали ',dn,'ч.',s,' мин.');end;
end.

работает более или менее корректно,при количестве деталей=1,при большем,не пишет суммарное время обработки,в общем,помогите,пожалуйста,исправить ошибки.

Последний раз редактировалось M_arisha; 16.12.2011 в 22:41.
M_arisha вне форума Ответить с цитированием
Старый 16.12.2011, 23:22   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Free Pascal:
Код:
program Project1;
uses
crt;

Type
 Tdetail=record
 I,DN,DL : integer;
 end;

  details=array [1..100] of Tdetail;
  mass=array[1..100] of integer;

procedure create(var T: Text; Var M:Tdetail);
  begin
    read(T,m.i);
    read(T,m.dn);
    read(T,m.dl);
    readln(T);
  end;

procedure Build_mass(var T:textfile; var M:details; size:integer);
  var
    i:integer;
  begin
    reset(T);
    i:=1;
    while not EOF(T) do
      begin
        create(T,m[i]);
        inc(i);
      end;
    size:=i;
  end;

Procedure Calc(M:details; sp:mass; size:integer);
var
  i,j:integer;
  time:real;
begin
  time:=0;
  for i:=1 to size do
    for j:=1 to size do
      if sp[i]=m[j].I then
        begin
          writeln('Время обработки детали №',m[i].I,'= ',m[i].DL,'м, наладка станка= ',m[i].DN,'ч.');
          time:=time+m[i].DL+(m[i].DN*60);
        end;
  writeln('Общее время выполнения= ',time:5:0,'минут');
end;

VAR
  M:details;
  sp:mass;
  T:textfile;
  i:integer;
BEGIN
  for i:=1 to 5 do Sp[i]:=i;

      assign(T,'input.txt');
      Build_mass(T,M,i);
      Calc(M,Sp,i);
      readln

end.
Delphi 2009:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Type
 Tdetail=record
 I,DN,DL : integer;
 constructor create(var T:textfile);
// procedure print;
 end;

  details=array [1..100] of Tdetail;
  mass=array[1..100] of integer;

constructor Tdetail.create(var T: Text);
  begin
    read(T,i);
    read(T,dn);
    read(T,dl);
    readln(T);
  end;

procedure Build_mass(var T:textfile; var M:details; size:integer);
  var
    i:integer;
  begin
    reset(T);
    i:=1;
    while not EOF(T) do
      begin
        M[i]:=Tdetail.create(T);
        inc(i);
      end;
    size:=i;
  end;

Procedure Calc(M:details; sp:mass; size:integer);
var
  i,j:integer;
  time:real;
begin
  time:=0;
  for i:=1 to size do
    for j:=1 to size do
      if sp[i]=m[j].I then
        begin
          writeln('Время обработки детали №',m[i].I,'= ',m[i].DL,'м, наладка станка= ',m[i].DN,'ч.');
          time:=time+m[i].DL+(m[i].DN*60);
        end;
  writeln('Общее время выполнения= ',time:5:0,'минут');
end;

VAR
  M:details;
  sp:mass;
  T:textfile;
  i:integer;
BEGIN
  for i:=1 to 5 do Sp[i]:=i;

  if fileexists('input.txt') then
    begin
      assignfile(T,'input.txt');
      Build_mass(T,M,i);
      Calc(M,Sp,i);
      readln
    end;

end.
Ввод с клавиатуры меня, как человека ленивого, просто вымораживает, поэтому данные берем из файла:


input.txt
Код:
2 3 4
1 1 3
3 5 4
4 5 6
5 1 1
Первое число - номер детали, второе - длительность наладки станка (в часах), третье - длительность обработки детали на станке (в минутах)


Написал по заданию, но не понял вот это:
Цитата:
Очередность обработки всех N деталей на данном станке хранится в виде массива SP типа int.
Если результат - общее время, какая разница, в каком порядке делать детали?
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 16.12.2011, 23:29   #3
M_arisha
Пользователь
 
Регистрация: 02.12.2011
Сообщений: 24
По умолчанию

Спасибо огромное))
P.S.может для тренировки дали..
M_arisha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверьте запись выражений в паскаль Artemona Помощь студентам 6 10.06.2011 07:12
паскаль задача))))))))))на запись в файл Лина59 Помощь студентам 0 29.05.2011 13:54
Паскаль. Запись в файл столбца. Dina92 Помощь студентам 0 20.11.2010 11:34
Запись(ПАСКАЛЬ) Таня.Ку Помощь студентам 2 10.03.2010 07:49
Запись (Паскаль) Таня.Ку Помощь студентам 3 01.03.2010 16:58