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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2015, 19:09   #1
GalaiAnton
Пользователь
 
Регистрация: 07.03.2015
Сообщений: 37
По умолчанию Дана матрица A размером nxm. Определить k - количество особых элементов массива A, считая его элемент особым, если он больше суммы

Дана матрица A размером nxm. Определить k - количество особых элементов массива A, считая его элемент особым, если он больше суммы остальных элементов его столбца.
Код:
var
  Form1: TForm1;
  A:Array[1..1000,1..1000] of integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='  i,j';
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
  i,j:Integer;
  l:array of Integer;
Begin
  Randomize;
  SetLength(l,4);
  StringGrid1.RowCount:=StrToint(Edit1.Text) + 1;
  StringGrid1.ColCount:=StrToInt(Edit2.Text) + 1;
  For i:=1 To StringGrid1.RowCount Do
    StringGrid1.Cells[0,i]:=IntToStr(i);
  For i:=1 To StringGrid1.ColCount Do
    StringGrid1.Cells[i,0]:=IntToStr(i);
  For i:=1 To StringGrid1.RowCount Do
    For j:=1 To StringGrid1.ColCount Do
      Begin
        A[i,j]:=Random(89) + 10;//Генерируем числа в 10..99
        StringGrid1.Cells[i,j]:=IntToStr(A[i,j]);
      End;
End;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var
  i,j,k,summ:Integer;
begin
 k:=0;
  For i:=1 To StringGrid1.RowCount Do
  For j:=1 To StringGrid1.ColCount Do
  summ:=0;
  summ:=summ+A[i,j];
  If  A[i, j] > (summ-A[i, j]) Then
inc(k);
Label3.Caption:='В массиве ' + IntToStr(k) + ' особых элементов';
end;
end.
В Label3 отображается 0,хотя есть особые элементы,подскажите,пожалуйста,что надо подправить,чтобы оно выдавало ответ,а то запарился....

Последний раз редактировалось Stilet; 21.03.2015 в 19:22.
GalaiAnton вне форума Ответить с цитированием
Старый 22.03.2015, 23:03   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

чисто формально
Цитата:
Код:
  For i:=1 To StringGrid1.RowCount Do
    For j:=1 To StringGrid1.ColCount Do
...
       StringGrid1.Cells[i,j]:=IntToStr(A[i,j]);
ошибка.
в StringGrid сначала идёт индекс СТОЛБЦА, потом индекс СТРОКИ

тут забыли операторные скобки (begin / end)
Цитата:
Код:
For i:=1 To StringGrid1.RowCount Do
  For j:=1 To StringGrid1.ColCount Do
  summ:=0;
  summ:=summ+A[i,j];
  If  A[i, j] > (summ-A[i, j]) Then
вы удивитесь, но в цикле выполняется только один оператор:
Код:
  For i:=1 To StringGrid1.RowCount Do
    For j:=1 To StringGrid1.ColCount Do
        summ:=0;

  строки ниже ВНЕ ЦИКЛА!!
  summ:=summ+A[i,j];
  If  A[i, j] > (summ-A[i, j]) Then
      inc(k);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица А размером п х т. Определить k — количество особых элементов массива А (Помогите исправить ошибку в программе на С++) alinyIIIka Помощь студентам 0 06.06.2014 23:42
Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если он больше суммы о Маленыч Общие вопросы Delphi 3 20.05.2013 00:08
Дана матрица размером NxM/ Определить упорядочены ли её строки по неубыванию суммы их элементов пожрать_бы Помощь студентам 3 12.12.2012 15:46
Дана матрица. Определить суммы положительных элементов строк и записать их в массив. mtv2107 Помощь студентам 5 05.01.2011 00:36