Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2015, 10:27   #1
Kolya23
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 15
Восклицание Сформировать матрицу 7х7 элементов. Вывести ее на экран, развернув на 90 градусов по часовой стрелке (Delphi)

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

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls,math;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  m,m1:array of integer;
  n:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
I,J:integer;
 // Çàïîëíåíèå 
ìàññèâà è âàâîä â 1-ûé
 ñòîëáåö StringGrid'a
begin
 if Edit1.text<>'' then
   begin
    N:=StrToint(Edit1.text);
    StringGrid1.RowCount:=N;
 end
 else
 begin
   begin
    ShowMessage('Ââåäèòå  "N"  ');
    Edit1.SetFocus;
    Exit;
   end;
 end;
  SetLength(M,N);
  for i := 0 to N-1 do
  for j :=0 to 7 do
  begin
   M[i]:=RandomRange(-50,100);
   StringGrid1.cells[j,i]:=INtTostr(M[i]);
  end;
Button2.Enabled:=true;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin

end.
я рандомно заполнил таблицу 7 на 7, но как ее перевернуть на кнопку 2 понятия не имею

Последний раз редактировалось Stilet; 29.05.2015 в 10:42.
Kolya23 вне форума Ответить с цитированием
Старый 29.05.2015, 10:37   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А поиском по форуму почему не пользуетесь?

Повернуть массив на 90 градусов


КАК повернуть матрицу на 90 градусов вправо (или влево).


Кстати, в вашем задании написано "не повернуть матрицу", а "вывести матрицу, повернутую на ..."
это ещё проще!

Последний раз редактировалось Serge_Bliznykov; 29.05.2015 в 10:40.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.05.2015, 10:48   #3
Kolya23
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А поиском по форуму почему не пользуетесь?

Повернуть массив на 90 градусов


КАК повернуть матрицу на 90 градусов вправо (или влево).


Кстати, в вашем задании написано "не повернуть матрицу", а "вывести матрицу, повернутую на ..."
это ещё проще!
Искал я на форуме ну в основном нашел только для консолей ,а для StringGrida не нашел .
Kolya23 вне форума Ответить с цитированием
Старый 29.05.2015, 10:49   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

разберите этот пример кода:
Код:
const n = 7;
var a : array[1..n, 1..n] of integer;
  i,j : integer;
begin
  for i:=1 to n do
    for j:=1 to n do a[i,j] := (i-1)*n+j;
    
  {прямой вывод матрицы}
  Writeln('Array: ');
  for i:=1 to n do begin
    for j:=1 to n do Write(a[i,j]:4);
    Writeln
  end;
  
  WriteLn;
  WriteLn('Rotate array');
  {вывод матрицы, повернутой на 90 градусов по часовой стрелке}
  for i:=n downto 1 do begin
    for j:=n downto 1 do Write(a[j, n-i+1]:4);
    Writeln
  end;

end.
Цитата:
Сообщение от Kolya23 Посмотреть сообщение
Искал я на форуме ну в основном нашел только для консолей ,а для StringGrida не нашел .
а чем вывод на консольно ПРИНЦИПИАЛЬНО отличается от вывода в стрингрид?!
Только тем, что у этого подвывернутого стринггрида индексы местами переставлены - в cells() сначала идёт индекс столбца, потом индекст строки. ну и нумерация от нуля. вот и всё.

Последний раз редактировалось Stilet; 29.05.2015 в 11:09.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2015, 13:40   #5
Kolya23
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 15
Восклицание

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
разберите этот пример кода:
Код:
const n = 7;
var a : array[1..n, 1..n] of integer;
  i,j : integer;
begin
  for i:=1 to n do
    for j:=1 to n do a[i,j] := (i-1)*n+j;
    
  {прямой вывод матрицы}
  Writeln('Array: ');
  for i:=1 to n do begin
    for j:=1 to n do Write(a[i,j]:4);
    Writeln
  end;
  
  WriteLn;
  WriteLn('Rotate array');
  {вывод матрицы, повернутой на 90 градусов по часовой стрелке}
  for i:=n downto 1 do begin
    for j:=n downto 1 do Write(a[j, n-i+1]:4);
    Writeln
  end;

end.

а чем вывод на консольно ПРИНЦИПИАЛЬНО отличается от вывода в стрингрид?!
Только тем, что у этого подвывернутого стринггрида индексы местами переставлены - в cells() сначала идёт индекс столбца, потом индекст строки. ну и нумерация от нуля. вот и всё.
Что значат вот эти две ошибки Array type required
ии Could not compile used unit1.pas
Kolya23 вне форума Ответить с цитированием
Старый 30.05.2015, 14:09   #6
Kolya23
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 15
По умолчанию

Спасибо, спустя 4 часа меня озарило и я все понял и сделал!!!
Kolya23 вне форума Ответить с цитированием
Старый 30.05.2015, 14:15   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Что значат вот эти две ошибки Array type required
ии Could not compile used unit1.pas
"Ожидается переменная типа Массив" и "Не могу скомпилировать из-за какой-то ошибки".
Ты на какой строчке эту ошибку-то получил?
Цитата:
я все понял и сделал!
... и осознал вину. Чисто сердечно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировать точки по часовой стрелке DarkHacker Общие вопросы Delphi 2 24.01.2015 15:35
повернуть квадратную матрицу на 90 градусов по часовой стрелке brans Общие вопросы по Java, Java SE, Kotlin 1 18.02.2011 19:42