Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String Grid, Упорядочить строки матрицы  
V
    Опции темы
Dvix
Дата 17.5.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.5.2008
Где: Yaroslavl

Репутация: нет
Всего: нет



Нет, вопрос не решён.
Первую задачу нужно решить так:

Находить сумму элементов строки и записывать их в массив, нужно поменять строки матрицы местами
в зависимости от суммы элементов. Первой строкой будет строка, у котороой сумма элементов минимальна. Последней строкой будет строка, у которой сумма элементов максимальна.
Ответ вывести в отдельный stringgrid. 
вводить числа в строки Stringgrid.

Вторую задачу нужно решить так:

Находить масксимальный элемент каждой строки. Менять местами стоки в зависимости от их максимального элемента. Первой строкой будет та строка, у которой макс. элемент минимален.Последнейц строкой буде та строка, у кот. макс. элемент наибольший.
Ответ вывести в отдельный stringgrid. 
вводить числа в строки Stringgrid.

Это сообщение отредактировал(а) Dvix - 17.5.2008, 14:34
PM MAIL   Вверх
THandle
Дата 17.5.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Цитата(Dvix @  17.5.2008,  15:31 Найти цитируемый пост)
Первую задачу нужно решить так:


Цитата(Dvix @  17.5.2008,  15:31 Найти цитируемый пост)
Вторую задачу нужно решить так:


Переделай оба варианта под строки, а не столбцы - и будет решение, если я правильно понял вопрос.
PM   Вверх
Dvix
Дата 17.5.2008, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.5.2008
Где: Yaroslavl

Репутация: нет
Всего: нет



как записать на делфи вот это: 
В StringGrid: Для начала выбрать размерность: 3*3. 
Вводишь числа: например 5, 7, 1. 6,6,1 и 5,4,1. После нажатия кнопки числа должны быть в обратном порядке занесены в строки?
PM MAIL   Вверх
THandle
Дата 17.5.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Цитата(Dvix @  17.5.2008,  17:09 Найти цитируемый пост)
В StringGrid: Для начала выбрать размерность: 3*3. 
Вводишь числа: например 5, 7, 1. 6,6,1 и 5,4,1.


Код


  StringGrid1.RowCount := 3;
  StringGrid1.ColCount := 3;
  StringGrid1.FixedCols := 0;
  StringGrid1.FixedRows := 0;
  StringGrid1.Options := StringGrid1.Options + [goEditing];



Вводишь любые числа.

Цитата(Dvix @  17.5.2008,  17:09 Найти цитируемый пост)
После нажатия кнопки числа должны быть в обратном порядке занесены в строки? 


Как нибудь так:

Код

procedure TForm1.Button2Click(Sender: TObject);
var
  i, j, k : integer;
begin
  for i := 0 to StringGrid1.RowCount - 1 do
    begin
      j := 0;
      k := StringGrid1.ColCount - 1;
      repeat
        StringGrid1.Rows[i].Exchange(j, k);
        inc(j);
        dec(k);
      until j > k;
    end;
end;


?

PM   Вверх
Dvix
Дата 17.5.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.5.2008
Где: Yaroslavl

Репутация: нет
Всего: нет



всё верно, но как написать, чтобы менялись строки?

Это сообщение отредактировал(а) Dvix - 17.5.2008, 17:27
PM MAIL   Вверх
THandle
Дата 17.5.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Dvix, это ответ на твой предыдущий пост:

Цитата(Dvix @  17.5.2008,  17:09 Найти цитируемый пост)
как записать на делфи вот это: 
В StringGrid: Для начала выбрать размерность: 3*3. 
Вводишь числа: например 5, 7, 1. 6,6,1 и 5,4,1. После нажатия кнопки числа должны быть в обратном порядке занесены в строки? 



Насчет задач - просто переделай их под строки.
PM   Вверх
Dvix
Дата 17.5.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 10.5.2008
Где: Yaroslavl

Репутация: нет
Всего: нет



Числа вводятся в StringGrid пользователeм.
ввести матрицу:
171
151
161
должно выводиться в тот же StringGrid1: 
151 
161
171
ответ должен выводиться в отдельный StringGrid2:
7
8
9

Как это записать на Делфи?

Это сообщение отредактировал(а) Dvix - 18.5.2008, 19:36
PM MAIL   Вверх
THandle
Дата 19.5.2008, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Вот тебе 1:

Код

unit Unit1;

interface

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

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

var
  Form1: TForm1;
  A : array of array of integer;
  n : integer = 5;

implementation

{$R *.dfm}



function SumLine(num : integer) : integer;
var
  i : integer;
begin
  result := 0;
  for i := 0 to n - 1 do
    result := result + A[i, num];
end;


procedure swap(first, second : integer);
var
  i, tmp : integer;
begin
  for i := 0 to n - 1 do
    begin
      tmp := A[i, first];
      A[i, first] := A[i, second];
      A[i, second] := tmp;
    end;
end;

procedure BubbleSort;
var
  i, j : integer;
begin
  for i := 0 to n - 1 do
    for j := 1 to n - i - 1 do
      if SumLine(j - 1) > SumLine(j) then
        swap(j - 1, j);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if TryStrToInt(Edit1.Text, n) then
    begin
      SetLength(A, n, n);
      StringGrid1.ColCount := n;
      StringGrid1.RowCount := n;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
begin
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      A[j, i] := StrToInt(StringGrid1.Cells[j, i]);
  BubbleSort;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      StringGrid1.Cells[j, i] := IntToStr(A[j, i]);
end;

end.


Вот второе:
Код


unit Unit1;

interface

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

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

var
  Form1: TForm1;
  A : array of array of integer;
  n : integer = 5;

implementation

{$R *.dfm}



function MaxInLine(num : integer) : integer;
var
  i : integer;
begin
  result := A[0, num];
  for i := 1 to n - 1 do
    if A[i, num] > result then
      result := A[i, num];
end;


procedure swap(first, second : integer);
var
  i, tmp : integer;
begin
  for i := 0 to n - 1 do
    begin
      tmp := A[i, first];
      A[i, first] := A[i, second];
      A[i, second] := tmp;
    end;
end;

procedure BubbleSort;
var
  i, j : integer;
begin
  for i := 0 to n - 1 do
    for j := 1 to n - i - 1 do
      if MaxInLine(j - 1) > MaxInLine(j) then
        swap(j - 1, j);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if TryStrToInt(Edit1.Text, n) then
    begin
      SetLength(A, n, n);
      StringGrid1.ColCount := n;
      StringGrid1.RowCount := n;
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
begin
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      A[j, i] := StrToInt(StringGrid1.Cells[j, i]);
  BubbleSort;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      StringGrid1.Cells[j, i] := IntToStr(A[j, i]);
end;

end.

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.