Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Снежная лавина
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 21
#1

Создать процедуру, поворачивающую в матрице средний наибольший ромб - Delphi

27.02.2016, 05:55. Просмотров 203. Ответов 2
Метки нет (Все метки)

Помогите написать программу на Delphi c использованием компонентов StringGrid:
Создать процедуру, поворачивающую в квадратном массиве matrixnn (n – нечетное) средний наибольший ромб элементов на 90 градусов по часовой стрелке.
Вот код который я написала, во второй процедуре полный бардак, помогите разобраться!!!
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
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
 
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
btn1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
Form1: TForm1;
a : array of array of integer;
i,j,p,x,n : integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
val(Edit1.Text,n,i);
if (i<>0)or not(n in [2..20])then
begin
ShowMessage('Неверно введено');
Edit1.Clear;
 
exit
end;
Setlength(a,n,n);
//создаем таблицы
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=n;
StringGrid2.ColCount:=n;
 
//создаем матрицу
randomize;
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
a[i,j]:=-20+random(31);
StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
end;
procedure TForm1.Button2Click(Sender: TObject);
p := (n-1) div 2;
{поворот по часовой стрелке}
for i:=0 to p do
for j:=i to n-1-i do
begin
x := a[i,j];
a[i,j] := a[n-j,i];
a[n-j,i] := a[n-i,n-j];
a[n-i,n-j] := a[j,n-i];
a[j,n-i] := x;
end;
StringGrid2.RowCount:=n;
StringGrid2.ColCount:=n;
for i:=0 to n-1 do
begin
for j:=0 to n-1 do
stringgrid2.Cells[j,i]:=inttostr(a[i,j]);
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
begin
fixedCols:=0;
fixedRows:=0;
defaultColwidth:=30;
scrollBars:=ssBoth;
end;
with StringGrid2 do
begin
fixedCols:=0;
fixedRows:=0;
defaultColwidth:=30;
 
scrollBars:=ssBoth;
end;
edit1.Text:='';
end;
 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2016, 05:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать процедуру, поворачивающую в матрице средний наибольший ромб (Delphi):

В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент - Delphi
Помогите,пожалуйста,вычислить задачу с массивом в Delphi В данной действительной квадратной матрице порядка n найти наибольший по...

Если в матрице есть два столбца c нулевыми элементами, то найти наибольший элемент - Delphi
Помогите дорешать задачу. А её практически сделал. Дана целочисленная матрица {Aij}i=1...n, j=1...m (n,mє). Конкретный размер задается...

Вычислить средний балл в каждой группе студентов и определить, какая группа имеет наибольший средний балл - C++
две группы студентов (1-ая -13 человек, 2-ая - 8 человек) сдают экзамен по информатике. Написать программу, вычисляющую, средний балл в...

Ромб в матрице - Java SE
Инициализация public static void main(String args) { int w = 30; int h = 20; int matr = new int; int r = 5; int x...

Создать процедуру, которая определяет последний мини-мальный элемент в трех средних строках матрицы. Заменить в матрице этот элемент нулем. - Turbo Pascal
Задание звучит как: Сформировать матрицы {aij}n,m , {bij}k,l , где i&lt;=(n,k), j&lt;=(m,l) , элементы которых определяются случайно из...

Неправильно выводится фамилия студента, у которого наибольший средний балл - Pascal ABC
Составить программу выбора по данным из таблицы списка студентов, имеющих максимальный средний бал. Таблица находиться в текстовом файле...

2
Puporev
Модератор
52993 / 40804 / 14054
Регистрация: 18.05.2008
Сообщений: 94,890
27.02.2016, 14:37 #2
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  a : array of array of integer;
  n,p : integer;
implementation
 
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
with StringGrid1 do
 begin
  fixedCols:=0;
  fixedRows:=0;
  defaultColwidth:=25;
  scrollBars:=ssBoth;
 end;
with StringGrid2 do
 begin
  fixedCols:=0;
  fixedRows:=0;
  defaultColwidth:=30;
  scrollBars:=ssBoth;
 end;
edit1.Clear;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
val(Edit1.Text,n,i);
if (i<>0)or not(n in [3..15])or not odd(n)then
 begin
  ShowMessage('Неверно введен размер матрицы');
  Edit1.Clear;
  Edit1.SetFocus;
  exit
 end;
Setlength(a,n,n);
//создаем таблицы
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
StringGrid2.RowCount:=n;
StringGrid2.ColCount:=n;
//создаем матрицу
randomize;
p:=n div 2;
for i:=0 to n-1 do
for j:=0 to n-1 do
 begin
  if ((i<=p)and(j>=p-i)and(j<n+i-p))
  or ((i>p)and(j>=i-p)and(j<n-i+p)) then
  a[i,j]:=10+random(50) else a[i,j]:=0;
  StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
 end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var k,i,x:integer;
begin
for k:=0 to p-1 do
for i:=k to p-1 do
 begin
  x := a[i,p+i-k];
  a[i,p+i-k] := a[p-i+k,i];
  a[p-i+k,i] := a[n-i-1,p-i+k];
  a[n-i-1,p-i+k] := a[p+i-k,n-i-1];
  a[p+i-k,n-i-1] := x;
 end;
for i:=0 to n-1 do
for k:=0 to n-1 do
StringGrid2.Cells[k,i]:=inttostr(a[i,k]);
end;
 
end.
1
Снежная лавина
0 / 0 / 0
Регистрация: 09.11.2015
Сообщений: 21
28.02.2016, 10:42  [ТС] #3
Спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2016, 10:42
Привет! Вот еще темы с ответами:

Наибольший и наименьший элемент в матрице - Pascal ABC
Найти наибольший элемент выше главной диагонали и наименьший – ниже главной диагонали.

Найти наибольший элемент в матрице - Pascal
Найти наибольший элемент в матрице Zij, элементы которой вычисляются по формуле Zij=Xi*Yj i=1,2.....,n j=1,2,.....m Векторы Xi...

Найти наибольший элемент в матрице - C (СИ)
Найти наибольший элемент в матрице в языке Си

Найти наибольший элемент в матрице - QBasic
дана матрица: 15 16 17 18 55 54 53 52 20 40 30 50 1. Найти наибольший...


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

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

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