Показать сообщение отдельно
  #1  
Старый 13.05.2014, 13:40
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
Восклицание Двумерный массив

Знакомый попросил написать программку.
Вот только не могу сообразить в чем дело:
Код:
program cex;

type
// указываем как и что нужно писать в массив
STROKA=record
          // ограничиваем ввод 10 символами
          Nazvanie:string[10];
          rashod:integer;
          end;

var i,j,Nceh,Nmes,SredSumm:integer;
    // Двумерный масиив для всего
    a:array[1..25, 1..3] of STROKA;
    // Массив для даты
    m:array[1..12] of Integer;
const
// Строка разделитель
l='_________________________________________________';
begin
     write('vvedite kolichestvo mesyachev= ');
     readln(Nmes);
     write('vvedite kolichestvo cehov= ');
     readln(Nceh);

 begin
   for i :=1 to Nceh do {цикл для перебора всех строк}
     for j :=1 to Nmes do {перебор всех элементов строки по столбцам}
       begin
         // Записываем месяцы в первую одномерный массив m
         m[j]:=j;

         // Записываем название цеха в 1 строку двумерного массива
         //Если столбеч первый тогда
         if j=1 then begin
             write('Nazvnie ceha= ');
             ReadLn(a[i,j].Nazvanie);
           end;

         // Записываем расход начиная со 2 столбца
             write('Vvedite rashod= ');
             ReadLn(a[i,j].rashod);
        end;
 end;

// Заполняем таблицу
// Шапка
writeln('Table');
writeln(l);
writeln('|         |              Data');
// выводим месяцы из m
for i:=1 to Nmes do
  begin
    write('|         |',m[i]:10);
  end;
// переходим на новую строку
writeln;
// константа
writeln(l);
writeln('|      Ceh|              Rashod');
writeln(l);
// выводим из двумерного массива
for i:=1 to Nceh do
 begin
   for j:=1 to Nmes do
     with a[i,j] do begin
       write(Nazvanie:10,'|',rashod:10);
     end ;
   writeln;
 end;

readln;

// проходим по столбцам и считаем среднее
for j:=2 to Nmes do
 begin
   for i:=1 to Nceh do
     begin
       //Сумма в столбце
       SredSumm:=SredSumm+a[i,j].rashod;
     end;
       // получаем среднее
       SredSumm:=SredSumm div Nceh;
       // Дописывем в массив среднее значение в дополнительной строке
       a[Nceh+1,j].rashod:=SredSumm;
 end;
       // Дописываем в массив дополнительную строку
       a[Nceh+1,1].Nazvanie:='srednya chena';

// Заполняем таблицу
// Шапка
writeln('Table');
writeln(l);
writeln('|         |              Data');
// выводим месяцы из m
for i:=1 to Nmes do
  begin
    write('|         |',m[i]:10);
  end;
// переходим на новую строку
writeln;
// константа
writeln(l);
writeln('|      Ceh|              Rashod');
writeln(l);
// выводим из двумерного массива
for i:=1 to Nceh+1 do
 begin
   for j:=1 to Nmes do
     with a[i,j] do begin
       write(Nazvanie:10,'|',rashod:10);
     end ;
   writeln;
 end;

readln;
end.

Интересует этот кусок

Код:
// проходим по столбцам и вычисляем среднее
for j:=2 to Nmes do
 begin
   for i:=1 to Nceh do
     begin
       //Сумма в столбце
       SredSumm:=SredSumm+a[i,j].rashod;
     end;
       // получаем среднее
       SredSumm:=SredSumm div Nceh;
       // Дописывем в массив среднее значение в дополнительной строке
       a[Nceh+1,j].rashod:=SredSumm;
 end;

Не правильно считает среднее. Сижу, смотрю, понять не могу где накосячил.
Ответить с цитированием