13.05.2014, 13:40
|
Новичок
|
|
Регистрация: 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;
Не правильно считает среднее. Сижу, смотрю, понять не могу где накосячил.
|