Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 09.09.2010, 00:26   #1 (permalink)
Milana
Новичок
 
Регистрация: 09.09.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Thumbs down Pascal. Задача. Обработка двумерных массивов.

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

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

Почитав информацию по этим ссылкам, вы наверное все решите

Задача. Output. Pascal
Циклические программы с использованием двумерных числовых массивов
Обработка одномерных массивов
Задача на массивы, Pascal. Помогите найти ошибку
Pascal, создание и обработка двоичных файлов
Обработка строк,массивов,записей

Старый 09.09.2010, 15:19   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

покажите входные данные... как они представлены?
kreol вне форума   Ответить с цитированием
Старый 09.09.2010, 16:35   #3 (permalink)
Milana
Новичок
 
Регистрация: 09.09.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
покажите входные данные... как они представлены?
1 таблица должна быть в таком виде

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

-------------------------------------------------------------------------
Milana вне форума   Ответить с цитированием
Старый 09.09.2010, 16:40   #4 (permalink)
Milana
Новичок
 
Регистрация: 09.09.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Криво как-то, но думаю что суть понятна
Milana вне форума   Ответить с цитированием
Старый 09.09.2010, 18:37   #5 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

так вы не знаете как сделать и вам нужен совет или хотите чтоб программу сделал?
kreol вне форума   Ответить с цитированием
Ads

Яндекс

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

Ладно. Вот:
Код:
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)? ответить утвердительно, то файл будет перезаписан и все предыдущие данные пропадут! Впрочем, в таком случае программа предупредит и переспросит.
Vladimir_S вне форума   Ответить с цитированием
Старый 09.09.2010, 19:16   #7 (permalink)
Milana
Новичок
 
Регистрация: 09.09.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
так вы не знаете как сделать и вам нужен совет или хотите чтоб программу сделал?
Ну хотя бы какую-нибудь работоспособную идею на счет второй таблицы или пару строчек проги. А то сделала только одномерный массив - сумма за год по каждому цеху, но никак не получается двумерный массив сумм за каждый квартал по каждому цеху....может подскажете хоть???
Milana вне форума   Ответить с цитированием
Старый 09.09.2010, 19:32   #8 (permalink)
Milana
Новичок
 
Регистрация: 09.09.2010
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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

Яндекс

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


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

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




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

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