|
#1
|
|||
|
|||
Двумерный массив
Знакомый попросил написать программку.
Вот только не могу сообразить в чем дело: Код:
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; Не правильно считает среднее. Сижу, смотрю, понять не могу где накосячил. |
#2
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
MotoArhangel (13.05.2014)
|
#3
|
|||
|
|||
Цитата:
Код:
for j:=2 to Nmes do begin SredSumm:=0; for i:=1 to Nceh do Последний раз редактировалось MotoArhangel, 13.05.2014 в 14:01. |
#4
|
||||
|
||||
Цитата:
Код:
for j := 2 to Nmes do Код:
for j := 1 to Nmes do |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
MotoArhangel (13.05.2014)
|
#5
|
|||
|
|||
Посчитал что в j=1 хранится строка и этот столбец не нужен.
Ну все разобрался спасибо огромнейшее=) Последний раз редактировалось MotoArhangel, 13.05.2014 в 14:29. |