Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Deniskd0ofye0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 11
1

Работа с двумерными динамическими массивами через функцию

16.06.2016, 15:01. Просмотров 775. Ответов 3
Метки нет (Все метки)

Задание такое при нажатии button1 выводится двумерный массив размерностью m x n, при нажатии button 2, массив модифицируется таким образом: заменить max значение по модулю на противоположное значение по знаку в каждой строке. Я очень зеленый в программировании. Если можно обьясните что не так именно в моем коде.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, math;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    StringGrid1: TStringGrid;
    Edit2: TEdit;
    Button2: TButton;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  Mas=array of array of integer;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
function Massiv(n,m:integer): mas;
var i,j:integer;
begin
for i := 0 to n - 1 do
for j := 0 to m - 1 do
Result[i,j]:=100-random(200);
end;
function MyFunction(b:mas;n,m:integer): double;
var j,max,o,k:integer;
begin
k:=0;
while k<=n do
begin
for j := 1 to m - 1 do
begin
max:=abs(b[k,0]);
if max<abs(b[k,j])  then begin max:=abs(b[k,j]); o:=b[k,j]; end;
end;
b[k,j]:=-b[k,j];
k:=k+1;
end;
result:=b[k,j];
end;
 
 
 
procedure TForm1.Button1Click(Sender: TObject);
var a:mas; n,i,j,k,m,t,p:integer;
begin
val(Edit1.Text,n,k);
val(edit2.text,m,p);
if (k<>0)or(p<>0) then
begin
  showmessage('vvedite razmernost');
  edit1.Clear;
  edit2.Clear;
  edit1.SetFocus;
end;
setlength(a,n,m);
a:=massiv(n,m);
with stringgrid1 do
begin
  Fixedrows:=0;
  Fixedcols:=0;
  colcount:=n;
  colcount:=m;
  for i:=0 to n-1 do
  for j:=0 to m-1 do
  cells[j,i]:=inttostr(a[i,j]);
end;
 
end;
procedure TForm1.Button2Click(Sender: TObject);
var b:mas; n,i,j,k,m,t,p,a:integer;
begin
val(Edit1.Text,n,k);
val(edit2.text,m,p);
if (k<>0)or(p<>0) then
begin
  showmessage('vvedite razmernost');
  edit1.Clear;
  edit2.Clear;
  edit1.SetFocus;
end;
setlength(b,n,m);
with stringgrid1 do
begin
  Fixedrows:=0;
  Fixedcols:=0;
  colcount:=n;
  colcount:=m;
  for i:=0 to n-1 do
  for j:=0 to m-1 do
  cells[j,i]:=myfunction(b,n,m);
end;
 
end;
 
end.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2016, 15:01
Ответы с готовыми решениями:

Работа с двумерными динамическими массивами через функцию
Доброго времени суток читающим! Помогите разобраться пожалуйста, так как времени ужасно мало, уже...

Работа с двумерными массивами
Помогите пожалуйста решить задачу про двумерный массив: Суть: Вычислить сумму элементов каждой...

Работа с двумерными массивами
помогите переделать программу с паскаля на delphi вот на всякий случай условие .В матирице ...

Работа с двумерными массивами
Осталось 2 задания в лабораторной которые не могу осилить, прошу помощи. Работа с двумерными...

Работа с двумерными массивами
1. Дан двумерный массив размером n*m, заполненный случайными числами. Определить, есть ли в данном...

3
Puporev
Модератор
55451 / 42564 / 29415
Регистрация: 18.05.2008
Сообщений: 100,687
16.06.2016, 17:20 2
Лучший ответ Сообщение было отмечено Deniskd0ofye0 как решение

Решение

В духе предыдущей программы. Кстати там нужно кое-что поправить как в этой.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Button1: TButton;
    StringGrid2: TStringGrid;
    Button2: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
mas=array of array of integer;
var
  Form1: TForm1;
  a:mas;
  n,m:integer;
implementation
 
{$R *.dfm}
function massiv:mas;
var i,j:integer;
begin
setlength(result,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
result[i,j]:=-50+random(101);
end;
function zmn(a:mas):mas;
var i,j,max,jmax:integer;
begin
for i:=0 to n-1 do
 begin
  max:=abs(a[i,0]);
  jmax:=0;
  for j:=0 to m-1 do
  if abs(a[i,j])>max then
   begin
    max:=a[i,j];
    jmax:=j;
   end;
  a[i,jmax]:=-a[i,jmax];
 end;
result:=a;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j,k:integer;
begin
randomize;
val(Edit1.Text,n,k);
if (k<>0)or(n<2) then
 begin
  ShowMessage('Неверно введено количество строк');
  Edit1.Clear;
  Edit1.SetFocus;
  exit;
 end;
val(Edit2.Text,m,k);
if (k<>0)or(m<2) then
 begin
  ShowMessage('Неверно введено количество столбцов');
  Edit2.Clear;
  Edit2.SetFocus;
  exit;
 end;
setlength(a,n,m);
a:=massiv();
showmessage('n='+inttostr(n)+#13#10+'m='+inttostr(m));
with StringGrid1 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  colcount:=m;
  rowcount:=n;
  defaultcolwidth:=30;
  for i:=0 to n-1 do
  for j:=0 to m-1 do
  cells[j,i]:=inttostr(a[i,j]);
 end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
randomize;
a:=zmn(a);
with StringGrid2 do
 begin
  fixedcols:=0;
  fixedrows:=0;
  colcount:=m;
  rowcount:=n;
  defaultcolwidth:=30;
  for i:=0 to n-1 do
  for j:=0 to m-1 do
  cells[j,i]:=inttostr(a[i,j]);
 end;
end;
 
end.
1
Deniskd0ofye0
0 / 0 / 0
Регистрация: 29.05.2016
Сообщений: 11
16.06.2016, 17:48  [ТС] 3
Огромное спасибо! Вы меня выручаете сегодня, не знаю как вас отблагодарить!
0
Puporev
16.06.2016, 17:50     Работа с двумерными динамическими массивами через функцию
  #4

Не по теме:

Цитата Сообщение от Deniskd0ofye0 Посмотреть сообщение
не знаю как вас отблагодарить!
А я знаю, но не скажу..

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2016, 17:50
Привет! Вот еще темы с ответами:

Работа с двумерными массивами- Delphi
В массиве Y размерности n*n даны элементы первого столбца и первой строки. Вычислить все элементы...

Работа с двумерными массивами в Delphi
Помогите пожалуйста написать программу на Delphi.в которой дана матрица и перечислить номера всех...

Работа с двумерными массивами в Delphi
Дан двумерный массив размером n*m, заполненный случайным образом. 1.Заменить максимальный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru