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

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

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

Поменять столбцы и строки матрицы по часовой стрелке - Delphi

30.03.2012, 23:00. Просмотров 768. Ответов 6
Метки нет (Все метки)

помогите изменить прогу сейчас она меняте столбцы и строки против часовой а нада что бы по часовой
за ранее всем спс
0
Вложения
Тип файла: zip zip Archive.zip (233.2 Кб, 15 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2012, 23:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поменять столбцы и строки матрицы по часовой стрелке (Delphi):

Поменять местами определенные строки матрицы, и определенные столбцы матрицы - Delphi
Дан двухмерный массив. а) Поменять местами первый и предпоследний столбцы. б) Поменять местами вторую и последнюю строки.

Поворот изображения по/против часовой стрелке - Delphi
как в делфи реализовывается такая штука??

Повернуть матрицу на 90 градусов по часовой стрелке. - Delphi
Сформировать матрицу 7х7 элементов, заполненную рандомно. Вывести ее на экран, развернув на 90 градусов по часовой стрелке.

Передвижение рисунка по часовой стрелке (Таймер) - Delphi
Рисунок должен «передвигаться» по часовой стрелке по углам формы ( по таймеру) . Либо Я что-то не так понимаю, либо не правильно пишу,...

Заполнить двумерный массив змейкой по часовой стрелке - Delphi
Заполнить массив размерность М*N, М и N задаются пользователем, числами от 1 и сколько получится ( в зависимости от размерности). По...

Вывести вершины треугольника в порядке обхода по часовой стрелке - Delphi
Составить программу. Ориентация. Заданы координаты вершин треугольника ABC на плоскости. Вывести их в порядке обхода по часовой стрелке...

6
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
31.03.2012, 01:34 #2
В Unit1 запишите такой код:
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;
 
type
  TForm1 = class(TForm)
    SG1: TStringGrid;
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  n:byte;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j : byte;
begin
n:=strtoint(edit1.text);
n:=n*2;
sg1.rowcount:=n+1;
sg1.Colcount:=n+1;
sg1.Width:=21*n+(N*3);
sg1.Height:=21*n+(n*3);
for i:=1 to n do
begin
  for j:=1 to n do
  begin
  sg1.Cells[i,j]:=inttostr((i+j)-(j*J));
  end;
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.close;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
  i,j : byte;
  a : string;
begin
for i:=1 to (n div 2) do
begin
  for j:=1 to (n div 2) do
  begin
  a:=sg1.cells[i+(n div 2),j+(n div 2)];
  sg1.cells[i+(n div 2),j+(n div 2)]:=sg1.cells[i+(n div 2),j];
  sg1.cells[i+(n div 2),j]:=sg1.Cells[i,j];
  sg1.cells[i,j]:=sg1.Cells[i,(n div 2)+j];
  sg1.Cells[i,(n div 2)+j]:=a;
  end;
end;
end;
end.
1
Lirrk
Заблокирован
31.03.2012, 18:24 #3
Sfera001,
Одиночка,
Не знаю кто учит этому бреду, но в работе с матрицами таблица нафиг не нужна, разве что для визуализации матрицы.
Двумерная матрица должна быть в двумерном массиве, причём динамическом. Все операции должны производится именно с этим массивом и дополнительными средствами. И тогда вся эта вакханалия с поворотами значительно упрощается и что немаловажно - ускоряется.
Ну хорошо, допустим матрица квадрат. а если нет? Прямоугольные матрицы получаются при построении таблиц графов. И именно их нужно укладывать чтобы отобразить. Хотя это неудобно и тоже бред. В стоячем положении с ними работать гораздо проще, но это к слову.

PS Никогда не используйте таблицу для взятия данных. Это глупость. Таблица только должна отображать эти данные. В ней даже сортировки намерено не сделано, поскольку всё это должно происходить с копией таблицы в памяти. Куда быстрее переписывать индексы. чем содержимое самих ячеек.
0
Psilon
Master of Orion
Эксперт .NET
5923 / 4822 / 634
Регистрация: 10.07.2011
Сообщений: 14,437
Записей в блоге: 5
Завершенные тесты: 4
31.03.2012, 18:35 #4
Lirrk, при интерполяции достаточно десятка точек, для чего можно спокойно использовать stringgrid... Ну а для сотен конечно лучше массив.
0
Lirrk
Заблокирован
31.03.2012, 18:57 #5
Psilon,
Хреновый из вас программист с такими взглядами.
Вредные привычки неистребимы, увы...
Принцип оптимизации должен быть везде. Даже в мелочи. Даже в простейшей программе с малым количеством данных.
0
Одиночка
3927 / 1852 / 88
Регистрация: 16.03.2012
Сообщений: 3,869
31.03.2012, 20:57 #6
Ну вы пофилософствуйте, а я решал задачу, которую поставил спрашивающий, наиболее простым способом. Даже особо не вдавался в её смысл. В конце-концов с точки зрения трудозатрат - это оптимальный вариант.
1
Миниатюры
Поменять столбцы и строки матрицы по часовой стрелке  
Lirrk
01.04.2012, 02:27     Поменять столбцы и строки матрицы по часовой стрелке
  #7
 Комментарий модератора 
Поуважительнее к участникам. Предупреждение
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 02:27
Привет! Вот еще темы с ответами:

Равносторонний треугольник, вращающийся относительно своего центра по часовой стрелке - Delphi
Равносторонний треугольник вращается относительно своего центра по часовой стрелке.Ф игура имеет контур толщиной 2 пикселяВнутренняя...

Поменять столбцы матрицы местами - Delphi
поменять местами последний и предпоследний столбцы двумерного массива

Поменять местами средние столбцы матрицы - Delphi
1) Дан массив размером 5*6 а) Удалить среднюю строку б) Поменять местами средние столбцы Заранее спасибо

Столбцы левой половины матрицы поменять местами со столбцами правой половины матрицы - Delphi
Дан двумерный массив из чётного числа столбцов. Столбцы левой половины массива поменять местами со столбцами правой половины.


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

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

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