Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 23.05.2015, 16:34   #1
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
Смущение StringGrid

Написала программку со стринггридом, она у меня сортирует массив, где самостоятельно вводятся элементы, причем строки и столбцы также вводятся. При нажатии на кнопочку "Сортировка" появляются какие-то небесные большие числа в стринггриде. Что не так?
Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;
  a:array of array of integer;
  m,n:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
 n:=StrToInt(Edit1.Text);
 m:=StrToInt(Edit2.Text);
 StringGrid1.RowCount:=n;
 StringGrid1.ColCount:=m;
 Setlength(a,m,n);
 for i:=1 to n do
  for j:=1 to m do
   begin
    a[i,j]:=StrToInt(StringGrid1.Cells[j-1,i-1]);
   end;

end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j,k,x:integer;
begin
for k:=1 to n*m do
 for i:=1 to n do
   for j:=1 to m do
    begin
     if a[i,j+1]<a[i,j] then
     begin
     x:=a[i,j+1];
     a[i,j+1]:=a[i,j];
     a[i,j]:=x;
     end;
    end;

for i:=1 to n do
for j:=1 to m do
StringGrid1.Cells[j-1,i-1]:=IntToStr(a[i,j]);

end;

end.
krasy вне форума   Ответить с цитированием
Старый 23.05.2015, 17:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,840
По умолчанию

Цитата:
for k:=1 to n*m do
Ой ой... А это зачем?
Цитата:
n:=StrToInt(Edit1.Text);
m:=StrToInt(Edit2.Text);
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=m;
Замени на
Код:
 n:=StringGrid1.RowCount;
 m:=StringGrid1.ColCount;
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 24.05.2015, 00:51   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 26,231
По умолчанию

Цитата:
Код:
 for j:=1 to m do
    begin
     if a[i,j+1]<a[i,j] then
и за пределы массива вылазишь!

тогда уже:
Код:
 for j:=1 to m-1 do
    begin
     if a[i,j+1]<a[i,j] then
...
и ещё.
я, когда слышу про сортировку матрицы, сразу настораживаюсь.
А как Вы матрицу (двухмерный массив) сортируете? по строкам, по столбцам, змейкой или как?
например, матрица
Код:
10  7   8   1
2  12   3   5
6   9   11  4
после сортировки как будет выглядеть?!
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 24.05.2015, 09:11   #4
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
По умолчанию

Сортировка идет по строкам.
Код:
1 7 8 10
2 3 5 12
4 6 9 11
krasy вне форума   Ответить с цитированием
Старый 24.05.2015, 09:22   #5
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,773
По умолчанию

Код:
var d:boolean;
............................
   For i:=1 to n do
   begin
      Repeat
         d:=true;
         For j:=1 to m-1 do
            If a[i,j]>a[i,j+1] then
            begin
               x:=a[i,j];
               a[i,j]:=a[i,j+1];
               a[i,j+1]:=x;
               d:=false;
            end;
      Until d;
   end;
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.narod.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 24.05.2015 в 09:25. Причина: ГРАНИЦЫ диапазона!!!
newerow1989 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel to StringGrid and StringGrid to Exel Євгеній Бєлік Общие вопросы Delphi 3 24.11.2013 00:20
StringGrid Миха-47 Общие вопросы Delphi 2 20.12.2011 00:03
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 17:58
StringGrid serj-07 Общие вопросы Delphi 12 25.05.2010 17:43


02:32.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.