![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
НЕ получается толком провести сортировку в результате выводит дикие числа - отсортированные. Я так полагаю что сортирует он мусор, который перезаписывает в массив, который ранее выводится.
Подскажите люди де ошибка, если кто знает или сталкивался с этим: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus;
type
TForm1 = class(TForm)
Label2: TLabel;
GroupBox1: TGroupBox;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Label8: TLabel;
Button4: TButton;
MainMenu1: TMainMenu;
Memo1: TMemo;
Memo2: TMemo;
N1: TMenuItem;
Label9: TLabel;
N2: TMenuItem;
Label10: TLabel;
OpenDialog1: TOpenDialog;
procedure Button4Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,k,Num,j: Integer;
implementation
{$R *.dfm}
procedure TForm1.Button4Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N1Click(Sender: TObject);
var
b:array[1..10]of integer;
t:textfile;
sum:Integer;
begin
If OpenDialog1.Execute then
begin
assignfile(t, OpenDialog1.FileName);
reset(t);
end;
While NOT EOF(t) do
begin
read(t,b[i]);
Memo1.Lines.Add(IntToStr(b[i]));
k:=k+1;
Label10.Caption:=IntToStr(k);
end;
CloseFile(t);
for i:=1 to 10 do begin
j:=i;
Num:=b[i];
while (j>0) and (Num<b[j-1]) do
begin
b[j]:=b[j-1];
Dec(j);
end;
b[j]:=Num;
end;
Memo2.Clear;
for i:=1 to 10 do begin
Memo2.Lines.Add(IntToStr(b[i]));
end;
end;
end.Последний раз редактировалось Admin, 01.06.2010 в 14:54. |
|
#2
|
||||
|
||||
|
Ну вы и окрошку сотворили.
1. Вы файл открываете какой? Текстовый. Так какого... вы читаете из него целое? Это совершенно разные по способу хранения данные. Читать надо в строковую переменную, преобразовывать ее в число по необходимости. 2. На кой вы заполняете мемо таким способом? У мемо есть внутренний метод за загрузки текста из файла. Memo1.Lines.LoadFromFile Исправите это - продолжим разговор. |
|
#3
|
|||
|
|||
|
Хммм....ща попробую из окрошки зделать суп))
|
|
#4
|
|||
|
|||
|
Я в тупике, хочу попробовать через type, record зделать и не знаю как! Может хоть намекнёте как там начало, а дальше покопаю...)
|
|
#5
|
||||
|
||||
|
Да вам там и ничего особо и не надо изобретать. Убрать все упоминания файла t, слегка переделать этот блок:
Код:
While NOT EOF(t) do
begin
read(t,b[i]);
Memo1.Lines.Add(IntToStr(b[i]));
k:=k+1;
Label10.Caption:=IntToStr(k);
end;Код:
Memo1.Lines.LoadFromFile(OpenDialog1.FileName); Label10.Caption:=IntToStr(Memo1.Lines.Count); |
|
#6
|
|||
|
|||
|
Эм, ну я сначала хотел пузырьком, но воспользовался вставкой. Напишите свой если есть желание лишним не будет, буду знать ещё метод))
хотел ещё через type попробовать) |