Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
1

Очень нужна программа сортировки

27.02.2011, 13:15. Просмотров 1568. Ответов 17
Метки нет (Все метки)

Суть такова: пользователь вводит числа в поле 1 (memo, edit или stringread), при нажатии на кнопку 1 они сортируются по возрастанию и конечный результат выводятся в другое поле (memo, edit или stringread). При на жатии на кнопу 2 числа сохраняются в файл, принажатии на кнопку 3 выводятся в поле1. Все перепробовала, ничего не получается и помочь никто не может. Надежда только на Вас!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 13:15
Ответы с готовыми решениями:

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

Очень нужна игра НИМ на Delphi!
здравствуйте, прошу помочь, пожалуйста, написать программу на Delphi НИМ....

Ребята ,очень нужна ваша помощь!
Листинг программы есть, только нужно сделать саму программу, чтобы она...

Очень нужна подсказка. Курсовик через 4 часа
Господа программисты, прошу помощи, до сдачи курсовой осталось буквально 4...

Здраствуйте очень нужна помощь!!!!нужно из этого кода сделать программу на DELPHI
unit Kurstik jumis; interface uses Windows, Messages, SysUtils, Variants,...

17
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 13:23 2
Цитата Сообщение от Камчатка Посмотреть сообщение
Все перепробовала, ничего не получается и помочь никто не может. Надежда только на Вас!
Показывай наработки...
0
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
27.02.2011, 13:29  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Button1Click(Sender: TObject);
begin
 
if OpenDialog1.Execute then
      Memo1.Lines.LoadFromFile(OpenDialog1.FileName);{Загрузка из файла}
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
   Memo1.Lines.SaveToFile(OpenDialog1.FileName); {Сохранение в файл}
end;
 
procedure TForm1.Button3Click(Sender: TObject);
  var t:tstringlist;
begin
t:=tstringlist.create;
t.addstrings(memo1.lines); {Присваиваем переменной t строки из memo}
t.sort; {Сортируем}
memo1.clear;
memo1.lines.addstrings(t); {Присваиваем memo уже отсортированные строки}
 
end;
 
end.
Пробовала так, все хорошо, но он сортирует, как строки, а не как числа. А как строки из memo сделать числами не знаю. Еще пробовала сортировку массива методом обмена. Вообще не работает.
0
DedBoroda
ComfyMobile
87 / 87 / 8
Регистрация: 04.11.2010
Сообщений: 376
27.02.2011, 13:34 4
Delphi
1
Memo1.Lines.SaveToFile(OpenDialog1.FileName); {Сохранение в файл}
на самом деле тут нужен SaveDialog.
А как строки из memo сделать числами не знаю.
function strtoint


Методы сортировки
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 13:34 5
Цитата Сообщение от Камчатка Посмотреть сообщение
Пробовала так, все хорошо, но он сортирует, как строки, а не как числа. А как строки из memo сделать числами не знаю.
StringList тут не поможет. Можно перегнать данные из мемо в динамический массив, сделав преобразование типов, выполнить сортировку массива с числовыми значениями, а потом перегнать отсортированные значения из массива в мемо для результатов обработки...
И лучше используй TryStrToInt()
А вообще какие числа должен содержать исходный мемо? И каким образом они записываются?
Т.е. формат исходных данных нужен... сколько чисел в строке...
0
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
27.02.2011, 13:45  [ТС] 6
Я пробовала данные из memo так в массив перегонять:
Delphi
1
2
3
4
5
6
7
procedure TForm1.Button2Click(Sender: TObject);
var i : integer;
mas : array[1..10] of string;
begin
for i:=1 to Memo1.Lines.Count do
 mas[i] := Memo1.Lines.Strings[i-1];
end;
Только как их там сортировать? Мож, че не так понимаю.
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 13:50 7
Нет, не так...
Delphi
1
mass:array of integer; //динамический массив целочисленных значений
Потом определяешь размерность массива, устанавливая ее по количеству чисел в мемо, перегоняешь все числа из мемо в массив, с помощью TryStrToInt, выполняешь сортировку массива, и делаешь обратное преобразование IntToStr при передачи данных из массива в результирующий мемо...
И циклы выполняй от 0 до Count-1...
0
DedBoroda
ComfyMobile
87 / 87 / 8
Регистрация: 04.11.2010
Сообщений: 376
27.02.2011, 13:51 8
Из memo в массив
Delphi
1
2
3
4
5
6
7
var m : array of integer;
  i: integer;
begin
setlength(m,memo1.Lines.Count);
for i := 0 to memo1.Lines.Count-1 do
m[i] := strtoint(memo1.Lines[i]);
end;
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 13:56 9
DedBoroda, а если в строке несколько чисел записано? Например 7 123 45 89 , тогда что???
0
DedBoroda
ComfyMobile
87 / 87 / 8
Регистрация: 04.11.2010
Сообщений: 376
27.02.2011, 13:58 10
Цитата Сообщение от Mad_Dog Посмотреть сообщение
DedBoroda, а если в строке несколько чисел записано? Например 7 123 45 89 , тогда что???
Давай поиграем в игру?
Ты будешь менять условия, а я буду быстро переписывать код под разные условия.
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 14:02 11
А вот чтобы в такие игры не играть, есть класс TParser... Его то лучше и использовать в данном случае...
0
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
27.02.2011, 14:03  [ТС] 12
В строке по одному числу написано.
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 14:04 13
Тогда проблем нет!
0
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
27.02.2011, 14:11  [ТС] 14
А как их потом отсортировать по возрастанию и вернуть в memo? Извините, что туплю, но что-то совсем никак.
0
Mad_Dog
Фрилансер
449 / 430 / 117
Регистрация: 01.06.2010
Сообщений: 1,315
27.02.2011, 14:14 15
Отсортировать по возрастанию/убыванию можешь любым известным/понятным тебе способом...
0
DedBoroda
ComfyMobile
87 / 87 / 8
Регистрация: 04.11.2010
Сообщений: 376
27.02.2011, 14:19 16
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var m : array of integer;
  i,j,t,k: integer;
begin
k := memo1.Lines.Count;
setlength(m,k);
for i := 0 to k-1 do
m[i] := strtoint(memo1.Lines[i]);
 
for i := 0 to k-1 do
  for j := 0 to k-i-2 do
    begin
      if m[j] > m[j+1] then
        begin
          t := m[j];
          m[j] := m[j+1];
          m[j+1] := t;
        end;
    end;
memo1.Clear;
for i := 0 to k-1 do memo1.Lines.Add(inttostr(m[i]));
Для справки: это называется метод пузырька
1
Камчатка
0 / 0 / 0
Регистрация: 27.02.2011
Сообщений: 6
27.02.2011, 14:29  [ТС] 17
Спасибо огромное. Сейчас попробую.

Добавлено через 10 минут
Еще раз ОГРОМНОЕ СПАСИБО. Все работает. Я неделю над программой билась. СПАСИБО!!!!!!!!!!!!!!!!!!!!
0
Dekio
Фрилансер
Эксперт С++
5838 / 1219 / 499
Регистрация: 23.11.2010
Сообщений: 3,377
Записей в блоге: 1
27.02.2011, 15:29 18
Сортировка пузырька, алгоритм удобней
Pascal
1
2
3
4
5
6
7
8
for i:=n-1 downto 1 do
for j:=1 to i do
if arr[j]<arr[j+1] then
begin
tmp:=arr[j];
arr[j]:=arr[j+1];
arr[j+1]:=tmp;
end;
Сортировка простого выбора
Pascal
1
2
3
4
5
6
7
8
for i:=1 to n-1 do
for j:=i+1 to n do
 if arr[i] < arr[j] then
  begin
  t:=arr[i];
  arr[i]:=arr[j];
  arr[j]:=t;
  end;
0
27.02.2011, 15:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2011, 15:29

Очень странная программа на Делфи
Здравствуйте. Постараюсь как можно поробнее, но не сильно обьемно описать суть...

Очень медленно работает программа
Сделал программу, для вк, и так, поясню суть проблемы. 3 этапа. 1....

Программа сортировки элементов многомерного массива вещественных чисел
Привет:) Нужно написать программу на Delphi7:программа сортирует элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru