Консультация № 200368
03.03.2021, 08:14
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:
В двумерном массиве с числами в интервале от -20 до 20 заменить все элементы строк с номером от А до В на противоположные по знаку. Подсчитать сумму каждой строки, входящей в диапазон от А до В. Выводить все промежуточные значения. Delphi

Обсуждение

давно
Старший Модератор
31795
6196
05.03.2021, 22:57
общий
это ответ
Здравствуйте, Ericsson!

Код Lazarus:
[code h=300]unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls, Math;
type
{ TForm1 }
TForm1 = class(TForm)
ComboBox1: TComboBox;
ComboBox2: TComboBox;
StringGrid1: TStringGrid;
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
i, j: integer;
begin
for i := 0 to StringGrid1.ColCount - 1 do
for j := 0 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[i, j] := IntToStr(randomRange(-20, 20));
for i := 0 to StringGrid1.RowCount - 1 do
ComboBox1.Items.Add(IntToStr(i));
ComboBox2.Enabled := False;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
var
i: integer;
begin
for i := ComboBox1.ItemIndex to StringGrid1.RowCount - 1 do
ComboBox2.Items.Add(IntToStr(i));
ComboBox2.Enabled := True;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
var
i, j, s: integer;
begin
for j := StrToInt(ComboBox1.Items[ComboBox1.ItemIndex]) to
StrToInt(ComboBox2.Items[ComboBox2.ItemIndex]) do
begin
s := 0;
for i := 0 to StringGrid1.ColCount - 1 do
begin
StringGrid1.Cells[i, j] := IntToStr(-StrToInt(StringGrid1.Cells[i, j]));
s := s + StrToInt(StringGrid1.Cells[i, j]);
end;
ShowMessage('Summa ' + IntToStr(j) + ' rows :=' + IntToStr(s));
end;
end;
end.[/code]
Создаете форму :


Удачи!
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа