Консультация № 197655
26.01.2020, 00:24
0.00 руб.
0 1 0
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
хочу попросить у вас помощи в решении непростой для меня задачи.
Дана вещественная матрица A размером п×n. Построить массив B, каждый элемент которого принимает значение true, если в строке матрицы A существует элемент, делящий ее на две части с одинаковой суммой элементов в каждой.
Матрица загружается из текстового файла.

С одной задачей я вроде справился, матрица загружается из текстового файла а вот с другой не могу, вроде суть немного улавливаю, что массив B - одномерный. Количество элементов в нём равно количеству строк в матрице А.
Далее абсолютно ничего понять не могу...

Что-то вроде пытался сделать, теперь вообще в stringGrid ничего не выводит.........
Как возможно реализовать данную задачу??? Подскажите пожалуйста (


Приложение:

public
z:integer;

{ Public declarations }
end;

var
Form1: TForm1;

implementation




{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
const
N = 100;

var
A : array[1..N, 1..N] of Extended;
B : array[1..N] of Boolean;
SumL, SumR : Extended;

f1:TextFile;
I,J,k:integer;
L, R: Integer;
SameValue: Boolean;
begin
Assignfile(f1, 'f1.txt');
Reset(f1);
ReadLn(f1, z);
StringGrid1.ColCount:=z+1;
StringGrid1.RowCount:=z+1;
//Перебор строк матрицы А.
For I:=1 to z do

B[I]:=False;
For J:=2 to N - 1 do begin

//Подсчёт суммы левой половины строки.
SumL:=0;
for L:=1 to J - 1 do begin
SumL := SumL + A[I,L];
end;
//Подсчёт суммы правой половины строки.
SumR:=0;
for R:=J + 1 to N do begin
SumR:=SumR + A[I, R];
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
end.

Обсуждение

давно
Старший Модератор
31795
6196
30.01.2020, 12:20
общий
Адресаты:
Думаю, что нужно как-то так:
[code lang=pascal h=300]var
a:array[1..10]of integer;
index_L,index_R,summa_L,summa_R:integer;
begin
for index_L:=1 to 10 do a[index_L]:=random(100);
for Index_L:=1 to 10 do write(a[index_L]:4);
index_l:=1;
index_R:=10;
summa_L:=a[index_L];
summa_R:=a[index_R];
while index_L<index_R do
begin
if summa_L>summa_R then
begin
summa_R:=summa_R+a[index_R];
dec(index_R);
end
else
if summa_R>summa_L then
begin
summa_L:=summa_L+a[index_L];
inc(index_L);
end
else
begin
summa_R:=summa_R+a[index_R];
dec(index_R);
summa_L:=summa_L+a[index_L];
inc(index_L);
end;
end;
writeln(Summa_L=Summa_R:10);
a[1]:=1;a[2]:=2;a[3]:=3;a[4]:=4;a[5]:=5;
a[6]:=1;a[7]:=2;a[8]:=3;a[9]:=4;a[10]:=5;
for Index_L:=1 to 10 do write(a[index_L]:4);
index_l:=1;
index_R:=10;
summa_L:=a[index_L];
summa_R:=a[index_R];
while index_L<index_R do
begin
if summa_L>summa_R then
begin
summa_R:=summa_R+a[index_R];
dec(index_R);
end
else
if summa_R>summa_L then
begin
summa_L:=summa_L+a[index_L];
inc(index_L);
end
else
begin
summa_R:=summa_R+a[index_R];
dec(index_R);
summa_L:=summa_L+a[index_L];
inc(index_L);
end;
end;
writeln(Summa_L=Summa_R:10);
end.[/code]
Вторая часть показывает работу с искуственным массивом.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа