• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal. Задача. Обработка двумерных массивов.

  • Автор темы Автор темы Milana
  • Дата начала Дата начала

Milana

Ученик
Регистрация
8 Сен 2010
Сообщения
5
Реакции
0
Баллы
0
Pascal. Задача. Обработка двумерных массивов.

Помогите пожалуйста с решением задачи. Сессия скоро, не успеваю все задания решить.
Информационная таблица по расходу электроэнергии на предприятии по 5 цехам заполняется каждый месяц по мере поступления данных. Вывести таблицу. Найти среднее потребление электроэнергии каждым цехом в каждом квартале. Вывести таблицу.
 
покажите входные данные... как они представлены?
 
покажите входные данные... как они представлены?

1 таблица должна быть в таком виде

-------------------------------------------------------------------------
цех | Расход энергии по месяцам, МВт-час
-------------------------------------------------------------------------
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
-------------------------------------------------------------
Литейный |
|
Кузнечный |
...

-------------------------------------------------------------------------
 
Криво как-то, но думаю что суть понятна
 
так вы не знаете как сделать и вам нужен совет или хотите чтоб программу сделал?
 
Ладно. Вот:
Код:
const
 Workshops: array[1..5] of STRING =
           ('Foundry','Forge','Metal-working','Assembly','Shipping');
var
 Pay:ARRAY[1..5,1..12] of WORD;
 Month, Months_bef,Num_of_Quart:BYTE;
 Pay_Q:WORD;
 i,j,k,l,m:Integer;
 F:Text;
 Dat_Type,Dt:Char;

BEGIN
 REPEAT
  Write('Exit (Y/N)? ');
  ReadLn(Dt);
  If (Dt='N') or (Dt='n') then
   begin
    Assign(F, 'C:\Data.txt');
    Write('New table (Y/N)? ');
    ReadLn(Dat_Type);
    If (Dat_Type='Y') or (Dat_Type='y') then
     begin
      Writeln('CAUTION!!! All the previous data will be removed!');
      Write('New table (Y/N)? ');
      ReadLn(Dat_Type);
     end;
    If (Dat_Type='Y') or (Dat_Type='y') then
     begin
      Months_bef:=0;
      Month:=1;
      ReWrite(F);
      Close(F);
     end else
     begin
      ReSet(F);
      ReadLn(F,Months_bef);
      Month:=Months_bef+1;
      For i:=1 to 5 do
       For j:=1 to Months_bef do
        ReadLn(F, Pay[i,j]);
      Close(F);
     end;
    WriteLn('Month number ',Month);
    Writeln('Energy consumtion of workshops:');
    For i:=1 to 5 do
     begin
      Write(Workshops[i]+': ');
      ReadLn(Pay[i,Month]);
     end;
    WriteLn;
    Write('Workshops:     ');
    For j:=1 to 12 do Write(j:5);
    WriteLn;
    Num_Of_Quart:=Month div 3;
    For i:=1 to 5 do
     begin
      Write(Workshops[i]);
      For k:=length(Workshops[i]) to 14 do Write(' ');
      For j:=1 to Month do Write(Pay[i,j]:5);
      WriteLn;
      Write('Quaters_medium:');
      For l:=1 to Num_of_Quart do
       begin
        Pay_Q:=0;
        For m:=1 to 3 do
         Pay_Q:=Pay_Q+Pay[i,(l-1)*3+m];
        Pay_Q:=Pay_Q div 3;
        Write('     ',Pay_Q:5,'     ');
       end;
      WriteLn;
     end;
    WriteLn;
    ReWrite(F);
    WriteLn(F,Month);
    For i:=1 to 5 do
     For j:=1 to Month do
      WriteLn(F, Pay[i,j]);
    Close(F);
   end;
 UNTIL (Dt='Y') or (Dt='y');
END.
Необходимые пояснения:
1. С псевдографикой возиться не стал - уж не взыщите - лень.
2. Английский язык - во избежание проблем с кодировками кириллицы. У меня - DOS версия Паскаля, у Вас - не знаю. Названия цехов: Foundry - Литейный, Forge - Кузнечный, Metal-working - Металлообрабатывающий, Assembly - Сборочный, Shipping - Транспортный.
3. Данные за "предыдущий" месяц сохраняются на диске в файле C:\Data.txt. При первом запуске программы этот файл создается.
4. ВНИМАНИЕ! Если на вопрос New table (Y/N)? ответить утвердительно, то файл будет перезаписан и все предыдущие данные пропадут! Впрочем, в таком случае программа предупредит и переспросит.
 
так вы не знаете как сделать и вам нужен совет или хотите чтоб программу сделал?

Ну хотя бы какую-нибудь работоспособную идею на счет второй таблицы или пару строчек проги. А то сделала только одномерный массив - сумма за год по каждому цеху, но никак не получается двумерный массив сумм за каждый квартал по каждому цеху....может подскажете хоть???
 
Спасибо огромное! Сейчас к себе прогу перепишу и попробую! Файлы мы еще правда не изучали, но это мне хороший урок! Поняла я в чем ошиблась! У меня семерка и никак не могу сделать чтоб в паскале переключать на кирилицу (хотя в ХР было нормально), вот и приходится тож английскими словами изъясняться
 
Назад
Сверху