Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 01:52   #1
Alena-kursk
 
Регистрация: 26.11.2009
Сообщений: 4
По умолчанию Задача на двумерный массив в Delphi

В регионе из 8 областей в течение ряда лет ведется компьютерный учет количества преступлений по каждой области. Найти и вывести на экран названия областей, в которых было совершено максимальное и минимальное количество преступлений в прошлом и текущем годах.
Все, до чего смогла додуматься:
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Название области';
StringGrid1.Cells[1,0]:='2006';
StringGrid1.Cells[2,0]:='2007';
StringGrid1.Cells[3,0]:='2008';
StringGrid1.Cells[4,0]:='2009';
end;

procedure TForm1.Button1Click(Sender: TObject);
Var Prestup:array[0..4,1..8] of integer;
    Sum:array[1..8] of integer;
    i,k,Max,Min,Obl1,Obl2:integer;
begin
 for i:=1 to 8 do
   begin
    Sum[i]:=0;
     for k:=3 to 4 do
       begin
     Prestup[k,i]:=strtoint(StringGrid1.Cells[k,i]);
     Sum[i]:=Sum[i]+Prestup[k,i];
      end;
  Prestup[k,i]:=strtoint(StringGrid1.Cells[k,i]);
  Sum[i]:=Sum[i]+Prestup[k,i];
       end;

 Max:=Sum[1];
 Obl1:=Prestup[0,1];

 for i:=1 to 8 do
   begin
 if Sum[i]>Max then Max:=Sum[i];
 Obl1:=Prestup[0,i];
 Label1.Caption:='Максимально'+inttostr(Obl1);
end;

 Min:=Sum[1];
 Obl2:=Prestup[0,1];
 for i:=1 to 8 do
 begin
 if Sum[i]<Min then Min:=Sum[i];
 Obl2:=Prestup[0,i];
 Label2.Caption:='Минимально'+inttostr(Obl2);
 end;

 end;
end.
Программа считает, но неправильно.
Подскажите пожалуйста, где ошибка.

Последний раз редактировалось Alena-kursk; 29.11.2009 в 02:21.
Alena-kursk вне форума Ответить с цитированием
Старый 29.11.2009, 02:05   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Все, до чего смогла додуматься
Еще бы правила почитать... додуматься...
Ладно, на первый раз сам подправлю.
По теме.
Вызывает удивление:
Код:
for k:=3 to 4 do
begin
Prestup[k-1,i]:=strtoint(StringGrid1.Cells[k-1,i]);
А почему начинаете со второго столбца и заканчиваете третьим?
Это - для начала.
Просто спать уже ложусь...
mihali4 вне форума Ответить с цитированием
Старый 30.11.2009, 02:10   #3
Alena-kursk
 
Регистрация: 26.11.2009
Сообщений: 4
По умолчанию

Да,надо:
for k:=3 to 4 do
begin
Prestup[k,i]:=strtoint(StringGrid1.Cells[k,i]);
но так выдает ошибку
Alena-kursk вне форума Ответить с цитированием
Старый 30.11.2009, 09:43   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

вот пример!
Код:
procedure TForm1.formCreate(Sender: TObject);
const ye=2005;
var i,j:Integer;
begin
for i:=1 to strngrd1.ColCount-1 do begin
  strngrd1.Cells[i,0]:='область №'+inttostr(i);
  strngrd1.ColWidths[i]:=80;end;
  for j:=1 to strngrd1.RowCount-1 do
  strngrd1.cells[0,j]:= IntToStr(ye+j);
 end;

procedure TForm1.btn1Click(Sender: TObject);
var i,min,max:Integer;
    imin,imax:integer;
begin
  min:= strtoint(strngrd1.cells[1,4]);
  max:= strtoint(strngrd1.cells[1,4]);
  imax:=1;
  imin:=1;
  for i:=1 to strngrd1.ColCount-1 do begin
      if strtoint(strngrd1.cells[i,4])<min then begin
       min:=strtoint(strngrd1.cells[i,4]);
       imin:=i;
      end;
     if strtoint(strngrd1.cells[i,4])>max then begin
       max:=strtoint(strngrd1.cells[i,4]);
       imax:=i;
      end;
   end;
  lbl1.Caption:='максимум в текущем году в области №'+inttostr(imax);
  lbl2.Caption:='минимум в текущемгоду в области №'+inttostr(imin);
  min:= strtoint(strngrd1.cells[1,3]);
  max:= strtoint(strngrd1.cells[1,3]);
  imax:=1;
  imin:=1;
  for i:=1 to strngrd1.ColCount-1 do begin
      if strtoint(strngrd1.cells[i,3])<min then begin
       min:=strtoint(strngrd1.cells[i,3]);
       imin:=i;
      end;
     if strtoint(strngrd1.cells[i,3])>max then begin
       max:=strtoint(strngrd1.cells[i,3]);
       imax:=i;
      end;
   end;
   lbl3.Caption:='максимум в прошлом году в области №'+inttostr(imax);
   lbl4.Caption:='минимум в прошлом году в области №'+inttostr(imin);
end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 30.11.2009, 15:43   #5
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
Создаем консольное приложение.
а это тут зачем?
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на двумерный массив. Паскаль Nubas Помощь студентам 5 12.10.2009 22:40
Задача на двумерный массив DELPHI 7 Max0306 Помощь студентам 1 22.09.2009 11:09
Двумерный массив(1 задача) MyaSnIKs Помощь студентам 4 28.03.2009 15:32
Задача на двумерный массив maliyusha Паскаль, Turbo Pascal, PascalABC.NET 5 30.12.2008 07:42