Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
1

Поворот матрицы на 90 градусов и крест на крест

29.10.2015, 18:28. Показов 819. Ответов 11
Метки нет (Все метки)

Здравствуйте, у меня такая вот загвоздка, все работает и поворот и крест на крест, но работает всего один раз, что мне сделать что бы при повторном нажатии, матрица сместилась еще на 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
procedure TForm1.BitBtn5Click(Sender: TObject);
var a,m,b,l,v,p:array [1..100,1..100] of integer;
var i,j,i1,n,k,x2,x3,x4,t,k1:integer;
begin
n:=strtoint(Edit2.Text);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=strtoint(MATR1.Cells[j,i]);
for i:=1 to n div 2 do
for j:=1 to n div 2 do
begin
m[i,j]:=a[i,j];
a[i,j]:=a[n div 2 +i,j];
end;
k1:=1;
for i:=1 to n div 2 do
begin
t:=1;
for j:=n div 2+1 to n do
begin
l[k1,t]:=a[i,j];
a[i,j]:=m[k1,t];
t:=t+1;
end;
k1:=k1+1;
end;
 k1:=1;
for i:=n div 2 +1 to n do
 begin
t:=1;
for j:=n div 2 +1 to n do
begin
b[k1,t]:=a[i,j];
a[i,j]:=l[k1,t];
t:=t+1;
end;
k1:=k1+1;
end;
k1:=1;
for i:=n div 2 +1 to n do  begin
t:=1;
//k:=1;
for j:=1 to n div 2 do
begin
v[k1,t]:=a[i,j];
a[i,j]:=b[k1,t];
t:=t+1;
end;
k1:=k1+1;
end;
for i:=1 to n do
for j:=1 to n do
MATR2.Cells[j,i]:=inttostr(a[i,j]);
end;
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2015, 18:28
Ответы с готовыми решениями:

Переставить блоки матрицы крест-накрест
не мог ли бы вы помочь с решением данных задач, собственно все задачи на фото. в файлах...

Переставить блоки матрицы размера n*n крест накрест.
дана действительная квадратная матрица порядка 2n.получить новую матрицу переставляя её блоки...

Переставить блоки матрицы размера n*n крест накрест.
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,переставляя её блоки...

[Процедуры и функции]Оформление матрицы в виде крест-накрест
Здравствуйте! Помогите пожалуйста, суть задачи такова: Сформировать матрицу С(5,5), элементы...

11
Модератор
64056 / 47472 / 32727
Регистрация: 18.05.2008
Сообщений: 115,185
29.10.2015, 20:54 2
Так выводи ее туда же откуда вводишь или каждый раз кроме первого вводи из таблицы 2.
1
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
29.10.2015, 22:18  [ТС] 3
Puporev, спасибо, что откликнулись, это мне для кнопки "case" создавать или как, я этого понять не могу)))
0
495 / 397 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
30.10.2015, 05:36 4
в конце процедуры тупо скопируй содержимое из MATR2.Cells[j,i] в MATR1.Cells[j,i]

Добавлено через 3 минуты
вот так должно вроде сработать
Delphi
1
2
3
for i:=1 to n do
for j:=1 to n do
MATR1.Cells[j,i]:=MATR2.Cells[j,i];
1
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
30.10.2015, 13:09  [ТС] 5
AHBAR, спасибо за ответ, но к сожалению так не работает, если вставляю то он стирает значения Matr1.
0
Модератор
64056 / 47472 / 32727
Регистрация: 18.05.2008
Сообщений: 115,185
30.10.2015, 13:12 6
Цитата Сообщение от Евгения01 Посмотреть сообщение
то он стирает значения Matr1
Так объясните по русски что Вы хотите. И приложите архив проекта со своими MATR1
1
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
30.10.2015, 14:17  [ТС] 7
Puporev, я хочу что бы матрица, повернулась еще раз на 90 градусов и так же крест на крест))) Вот проект))) Все сделано просто преподаватель попросил доделать до такого вида, как и выделить мах и min элемент другими цветами. А matr1 - это всего лишь StringGrid1)))
0
Вложения
Тип файла: rar кп13.rar (540.6 Кб, 3 просмотров)
495 / 397 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
30.10.2015, 14:30 8
Евгения01, я именно это и имел в виду, потому что когда вы второй раз нажмете на свое кнопку - ее процедура выполнит все с MATR1

если дело в том что нужно сохранить предыдущую матрицу для наглядности и проверки, то можно эти матрицы например поменять местами. как это сделать? ну например вам понадобится доп переменная-буфер.
Delphi
1
2
var
buf : String;
затем вы копируете матрицу1 в буфер, матрицу 2 в матрицу1 и буфер в матрицу2
Delphi
1
2
3
4
5
6
7
for i:=1 to n do
for j:=1 to n do
BEGIN
buf := MATR1.Cells[j,i];
MATR1.Cells[j,i] := MATR2.Cells[j,i];
MATR2.Cells[j,i] := buf;
END;
Добавлено через 5 минут
Может вам нужен 3 StringGrid3.? тогда вы ьерете свой код, копируете вставляете, только меняете: вместо матр1=март2, а вместо матр2=март3. после нажатия кнопки получаете: исходная матрица (матр1), переделанная матрица (матр2) и дважды переделанная матрица (март3). только это длинноватый код будет. можно исхитрится и просто подкоррективать начальный код чтоб он сразу в две матрицы делал результаты
1
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
30.10.2015, 14:40  [ТС] 9
AHBAR, спасибо, за помощь, попыталась я сделать с буфером, но не вышло. Про третий MATR я подумывала, спрашивала преподавателя сказал, что все может быть намного проще, вот и сижу пытаюсь. Выше я уже скидывала проект, если интересно
0
495 / 397 / 260
Регистрация: 05.04.2013
Сообщений: 1,763
30.10.2015, 15:35 10
Евгения01, просто непонятна постановка задачи насчет "еще раз перевернуть и крест на крест", вернее понятна, но вы недоговариваете или наоборот - меня не понимаете))
код работает верно по вашим словам.
процедура TForm1.BitBtn5Click(Sender: TObject) производит манипуляцию с MATR1(как исходная), MATR2 - как результат преобразования. как только вы нажмете второй раз кнопку - процедура снова проделает тоже самое, а поскольку МАТР1 осталась в неизменном виде, то что вы ожидаете получить? - тоже самое и будет в МАТР2
1
Модератор
64056 / 47472 / 32727
Регистрация: 18.05.2008
Сообщений: 115,185
30.10.2015, 15:40 11
Если есть 2 разных преобразования, то нужно что-то типа радиобаттонов, где выбирать вид преобразования.
1
13 / 13 / 5
Регистрация: 29.10.2015
Сообщений: 317
30.10.2015, 16:53  [ТС] 12
Puporev, спасибо за помощь, я разобралась)

Добавлено через 10 секунд
AHBAR, спасибо за помощь, я разобралась)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.10.2015, 16:53

Красный крест
Какое событие происходит, когда чувак закрывает форму через красный крест или как это определить?

Крест vs Топор
Иисус жил во времена, когда самым модным орудием казни был Крест. Но времена бывают разные, как и...

Конскопический крест
Доброго времени суток! Столкнулся с такой задачей: есть изображение с коноскопическим крестом,...

Нарисовать крест из символов
Всем привет, помагите решить задачу только использвав <iostream> Ввести длину и толщину креста и...


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

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

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