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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 12:22   #1
Space91
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 13
Вопрос Вывести рандом двумерного массива в стринггрид.

вопрос к профессионалам,любителям и просто тем кто шарит
Задача: найти разницу максимума и минимума числа двумерного массива.
Мне бы вывести рандом в стринггрид.

вот я набросал код:
Код:
interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    BitBtn1: TBitBtn;
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    A:array[1..3,1..3]of real;
    
implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j:integer;
    min:real;
    max:real;

begin
Randomize;
For i:=1 to 3 do
For j:=1 to 3 do
A[i,j]:=random(20);


A[i.j]:= floattostr(Stringgrid1.cells[i,j])
max:=1;
For i:=1 to 3 do
For j:=1 to 3 do
if A[i,j]>max then
max:=A[i,j];
Edit1.text:=Floattostr(ma
x);
 min:=1;
For i:=1 to 3 do
For j:=1 to 3 do
if A[i,j]<min then
min:=A[i,j];
Edit2.text:=Floattostr(min);


memo1.lines.add(floattostr(max-min));

end;

Последний раз редактировалось Space91; 25.05.2010 в 12:24.
Space91 вне форума Ответить с цитированием
Старый 25.05.2010, 12:33   #2
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Попробуй так:
Stringgrid1.cells[i,j]:=floattostr(random(20))
и ещё min:=1 думаю брать не стоит, вдруг окажется минимум=5?
min:=max.
Ol'ga_new вне форума Ответить с цитированием
Старый 25.05.2010, 16:06   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
и ещё min:=1 думаю брать не стоит, вдруг окажется минимум=5?
Ольга по сути абсолютно права
Цитата:
min:=max.
Она хотела сказать:
Код:
 min := 1.7E38;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.05.2010, 16:12   #4
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

а точно код работал?

Код:
A[i.j]:= floattostr(Stringgrid1.cells[i,j]) //тут вроде несоответствие типов, да и вообще за границы массива должно всё вылететь

max:=1;
и вместо
max:=1;
надо бы тогда
max:=StrToFloat(Stringgrid1.cells[1,1]);

аналогично с минимумом.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.

Последний раз редактировалось IliaIT; 25.05.2010 в 16:16.
IliaIT вне форума Ответить с цитированием
Старый 25.05.2010, 17:59   #5
Space91
Пользователь
 
Регистрация: 25.05.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от IliaIT Посмотреть сообщение
а точно код работал?

Код:
A[i.j]:= floattostr(Stringgrid1.cells[i,j]) //тут вроде несоответствие типов, да и вообще за границы массива должно всё вылететь

max:=1;
и вместо
max:=1;
надо бы тогда
max:=StrToFloat(Stringgrid1.cells[1,1]);

аналогично с минимумом.

Код работает вроде ровно без строчки A[i.j]:= floattostr(Stringgrid1.cells[i,j])

но получилось замутить что бы вывести рандом в стринггрид!

begin
Randomize;
For i:=0 to 3 do
For j:=0 to 3 do

Stringgrid1.cells[i,j]:=floattostr(random(20));

теперь программа находит постоянно мах - 1 а min - 0
о укратители делфи помогите "причесать" код

Последний раз редактировалось Space91; 25.05.2010 в 18:18.
Space91 вне форума Ответить с цитированием
Старый 26.05.2010, 08:21   #6
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

Чего то тебя не туда потянуло.... я так понял теперь вместо матрицы а ты задаёшь в таблицу числа, а ищешь по матрице.
тогда и в поиске меняй A[i,j] на StrToFloat(Stringgrid1.cells[i,j]), а так же в
max:=StrToFloat(Stringgrid1.cells[1,1]) вместо max:=1. С минимумом аналогично.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 26.05.2010, 15:46   #7
krGorka
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 35
По умолчанию

A[i.j]:= floattostr(Stringgrid1.cells[i,j])
эта строка вообще не в цикле. Чему равны i,j ?
Если используешь Stringgrid1.cells[i,j] , то i,j - как индексы начинаются с нуля. А твоя матрица описана с 1..3
krGorka вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемножение одномерного массива на двумерный daget Помощь студентам 4 14.12.2009 06:27
Функция и СтрингГрид qed Помощь студентам 1 13.06.2009 17:22
Как вывести двумерный массив в графическом режиме паскаль? Darkwinged Помощь студентам 3 19.05.2009 21:04
Как вывести на экран двумерный массив случайным образом? Stager Общие вопросы C/C++ 5 07.01.2009 20:53