Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;

Не правильно считает среднее. Сижу, смотрю, понять не могу где накосячил.
Ответить с цитированием
  #2  
Старый 13.05.2014, 13:43
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от MotoArhangel
Интересует этот кусок

Код:
// проходим по столбцам и вычисляем среднее
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;

Не правильно считает среднее. Сижу, смотрю, понять не могу где накосячил.
Наверное нужно обнулять переменную SredSumm перед вычислением очередного среднего значения.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
MotoArhangel (13.05.2014)
  #3  
Старый 13.05.2014, 13:49
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Наверное нужно обнулять переменную SredSumm перед вычислением очередного среднего значения.
Код:
for j:=2 to Nmes do
 begin
   SredSumm:=0;
   for i:=1 to Nceh do  
Так. И все равно считает не правильно.

Последний раз редактировалось MotoArhangel, 13.05.2014 в 14:01.
Ответить с цитированием
  #4  
Старый 13.05.2014, 14:04
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от MotoArhangel
Код:
for j:=2 to Nmes do
 begin
   SredSumm:=0;
   for i:=1 to Nceh do  
Так. И все равно считает не правильно.
Ну так наверное потому-что у тебя так:
Код:
for j := 2 to Nmes do
а не так:
Код:
for j := 1 to Nmes do
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
MotoArhangel (13.05.2014)
  #5  
Старый 13.05.2014, 14:23
MotoArhangel MotoArhangel вне форума
Новичок
 
Регистрация: 14.10.2012
Сообщения: 58
Версия Delphi: Delphi 10.4
Репутация: 10
По умолчанию

Посчитал что в j=1 хранится строка и этот столбец не нужен.
Ну все разобрался спасибо огромнейшее=)

Последний раз редактировалось MotoArhangel, 13.05.2014 в 14:29.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:49.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter