StringGrid сортировка, по строкам |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
StringGrid сортировка, по строкам |
Alucard |
25.02.2010 21:22
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Влад Репутация: 0 |
var Код для стрингрида и двух кнопок. Первая формирует, вторая сортирует по убыванию Помогите плиз: 1.сортировка происходит с шагом на одну клетку, как сделать что бы они выстроились в нужную последовательность после 1 нажатия? 2. нужно сосчитать сумму чисел в строке и выстроить строки по возрастанию этого самого числа |
volvo |
25.02.2010 21:31
Сообщение
#2
|
Гость |
Цитата Первая формирует, вторая сортирует по убыванию ЧТО формирует? ЧТО сортирует? По убыванию ЧЕГО? Ты б хоть пример приводил, что ожидать-то от кода, а то были одни числа, потом раз - поменялись напрочь на другие. И чего это было?Тебе чего надо-то? Update Объясняю: ДО: ПОСЛЕ: Внимание - вопрос, по какому критерию "отсортирован" грид? Сообщение отредактировано: volvo - 25.02.2010 21:39 |
volvo |
25.02.2010 23:55
Сообщение
#3
|
Гость |
А в ответ - тишина
С использованием минимальных возможностей Дельфи сортировка элементов строк Grid-а по убыванию пишется так: function mySort(List: TStringList; first, second: Integer): Integer; // это функция сортировки |
Alucard |
26.02.2010 5:43
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Влад Репутация: 0 |
volvo
Первой кнопкой формируем массив рандомных чисел, второй кнопкой сортируем построчно в порядке убывания, тесть первый элемент строки - самая большая цифра этой строки, а последняя - самая маленькая. На кнопку сортировки надо нажать несколько раз, что бы цыфры переползли на свое место. у меня не получается найти сумму элементов строки грида, а именно синтаксис обращения к гриду. Если в массиве: var m,i:integer; прокатывал, то m:=m+StrToInt(cells[i]); ни в какую не хочет Когда будет найдена сумма всех 5 строк грида, нужно выстроить строки в порядке возрастания (первая строка с самой маленькой суммой, последняя самой большой) Сообщение отредактировано: volvo - 13.03.2010 16:11 |
Client |
26.02.2010 16:47
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
unit Unit2;На форме стринггрид и 2 кнопки. Еще надо отсорировать сами строки... Сообщение отредактировано: Client - 26.02.2010 16:55 |
volvo |
26.02.2010 17:29
Сообщение
#6
|
Гость |
Цитата у меня не получается найти сумму элементов строки грида Блин... Вы чего, издеваетесь? Как ЭТО связано с заданиемЦитата второй кнопкой сортируем построчно в порядке убывания, тесть первый элемент строки - самая большая цифра этой строки, а последняя - самая маленькая. ? Вот где здесь, в задании, сказано что-то про какую-то сумму? Процитируй мне это, может у меня что-то с глазами? Ощущение создается такое, что ты сам не знаешь, чего тебе надо. Ты мой код смотрел? Запускал? Он делает в точности то, что написано во второй моей цитате. Нет, блин, тебе теперь какую-то сумму приплести понадобилось. Задание сформулируй как положено, безо всяких виляний, потом будем дальше разговаривать.Ссылка в тему: Сага о X, Y и Z... |
Alucard |
22.04.2010 17:32
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 15 Пол: Мужской Реальное имя: Влад Репутация: 0 |
Цитата ? Вот где здесь, в задании, сказано что-то про какую-то сумму? Процитируй мне это, может у меня что-то с глазами? Не хочу тебя расстраивать, но... Цитата Код для стрингрида и двух кнопок. Первая формирует, вторая сортирует по убыванию Помогите плиз: 1.сортировка происходит с шагом на одну клетку, как сделать что бы они выстроились в нужную последовательность после 1 нажатия? 2. нужно сосчитать сумму чисел в строке и выстроить строки по возрастанию этого самого числа Client СПАСИБО А можно обойтись без массива в этом задании? Все операции сделать в стринггриде? Это ведь тоже массив Код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type a=array [1..5] of integer; m=array [1..5] of a; const n=5; var Form1: TForm1; mas:m; implementation {$R *.dfm} procedure refreshtable; var i,j:byte; begin for i:= 1 to n do for j:= 1 to n do Form1.StringGrid1.Cells[j-1,i-1]:=IntToStr(mas[i,j]); end; procedure TForm1.Button1Click(Sender: TObject); var i,j:byte; s:integer; begin for i:= 1 to n do begin s:=0; for j:= 1 to n do begin mas[i,j]:=Random(50)+1; s:=s+mas[i,j]; end; StringGrid1.Cells[5,i-1]:=IntToStr(s); end; refreshtable; end; procedure TForm1.Button3Click(Sender: TObject); var i,j:byte; s:string; k:a; begin for i := 1 to 4 do for j := 1 to n-i do if (StrToInt(StringGrid1.Cells[5,j]) < StrToint(StringGrid1.Cells[5,j-1])) then begin k:=mas[j]; mas[j]:=mas[j+1]; mas[j+1]:=k; s:=StringGrid1.Cells[5,j-1]; StringGrid1.Cells[5,j-1]:=StringGrid1.Cells[5,j]; StringGrid1.Cells[5,j]:=s; end; refreshtable; end; procedure TForm1.Button2Click(Sender: TObject); var temp,i,j:byte; begin for i:=1 to n do for j:=0 to n do if mas[i,j]>mas[i-1,j] then begin temp:=mas[i-1,j]; mas[i-1,j]:=mas[i,j]; mas[i,j]:=temp; end; refreshtable; end; end. Что то не так с последней процедурой Сообщение отредактировано: Alucard - 22.04.2010 18:28 |
Client |
22.04.2010 18:53
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
если убрать массив, то придется работать с StringGrid1.Cells[] постоянно.
|
volvo |
23.04.2010 15:14
Сообщение
#9
|
Гость |
Цитата Что то не так с последней процедурой Вылет за границу массива - достаточно веская причина, чтоб было "не так"?Раз: type ... при i = 1 будет вылет за пределы массива. Чтобы увидеть это - даже запускать программу не надо, оно на поверхности лежит... |
Текстовая версия | 28.04.2024 15:23 |