![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Задача такая: Разработать программу нахождения максимального и минимального элементов вектора. Координаты вектора находятся в файле.
Программа должна позволять сформировать исходный вектор. Я думаю мне надо из текстового файла которые например выглядит так: Код:
2 5 3 7 4 8 2 9 Сделал программу которая может сформировать исходный вектор, может исправлять его, и выводит в указанное Memo... Но вот как сформировать массив? max и min по идее можно найти так: Код:
for i:=1 to n do begin
if a[i]>max
then max:=a[i];
end;
for i:=1 to n do begin
if a[i]<min
then min:=a[i];
end;P.S.: Если бы массива тут не было, то супер. Но тут... Помогите дописать плиз. ![]() Исходная задача прикреплена. Последний раз редактировалось Biatov, 15.03.2010 в 02:36. |
|
#2
|
|||
|
|||
|
Код:
type
TVector = record
X, Y : Integer;
end;
var
A : Array Of TVector;
procedure TForm1.PackTextToArray;
var
I : Integer;
begin
SetLength(A,0);
For I := 0 To Memo1.Lines.Count-1 Do
If Trim(Memo1.Lines[i]) <> '' Then
Begin
SetLength(A,Length(A)+1);
S := Trim(Memo1.Lines[i]);
A[High(A)].X := StrToInt(Copy(S,1,Pos(' ',S)));
A[High(A)].Y := StrToInt(Copy(S,Pos(' ',S),Length(S)));
End; |
|
#3
|
||||
|
||||
|
Вообще ничего не понятно. Выбивает ошибку:
Код:
Project Project1.exe raised exception class EConvertError with message "2' is not a valid integer value'. Process stopped. Use Step or Run to continue. |
|
#4
|
||||
|
||||
|
Код:
A[High(A)].Y := StrToInt(Copy(S,Pos(' ',S) + 1,MaxInt));Хотя какоето странное сообщение об ошибке - '2' не число, может Код:
'' 2' is not a valid integer value' |
|
#5
|
||||
|
||||
|
Куда именно вставлять код lmikle?:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Grids;
type
TVector = record
X, Y : Integer;
end;
type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure PackTextToArray(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
A : Array Of TVector;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
buf: String[80]; // буфер для чтения из файла
begin
fName := Edit1.Text; AssignFile(f, fName);
{$I-}
Reset(f); // открыть для чтения
{$I+}
if IOResult <> 0 then begin
MessageDlg('Ошибка доступа к файлу ' + fName,
mtError,[mbOk],0); exit; end;
// чтение из файла
while not EOF(f) do begin
readln(f, buf); // прочитать строку из файла
Memo1.Lines.Add(buf); // добавить строку в поле Memo1
end;
CloseFile(f); // закрыть файл
end;
procedure TForm1.Button2Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80]; // имя файла
i: integer;
begin
fName := Edit1.Text; AssignFile(f, fName);
Rewrite(f); // открыть для перезаписи
// запись в файл
for i:=0 to Memo1.Lines.Count do // строки нумеруются с нуля
writeln(f, Memo1.Lines[i]);
CloseFile(f); // закрыть файл
MessageDlg('Данные записаны в файл ',mtInformation,[mbOk],0);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
f: TextFile; // файл
fName: String[80];// имя файла
a: array[1..6] of string;
i:integer;
begin
fName := Edit1.Text;
AssignFile(f, fName);
Reset(f); // открыть для чтения
CloseFile(f); // закрыть файл
end;
procedure TForm1.N4Click(Sender: TObject);
begin
MessageDlg('Лабораторную работу выполнил: *** (5 группа)', mtInformation, [mbOk], 0);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
MessageDlg('Разработать программу нахождения максимального иминимального элементов вектора.'+#13+'Координаты вектора находятся в файле.'+#13+'Программа должна позволять сформировать исходный вектор.', mtInformation, [mbOk], 0);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
Close;
end;
end.Последний раз редактировалось Biatov, 15.03.2010 в 16:54. |
|
#6
|
||||
|
||||
|
На всякий случАй вместо
Код:
fName: String[80]; Напиши Везде ( и не только для fName ) Код:
fName: String; В procedure TForm1.Button1Click(Sender: TObject); В начале Код:
SetLength(A,0); Код:
readln(f, buf); // прочитать строку из файла Код:
SetLength(A,Length(A)+1); readln(f, A[High(A)].X, A[High(A)].Y); buf := IntToStr(A[High(A)].X) + ' ' + IntToStr(A[High(A)].Y); |
|
#7
|
||||
|
||||
|
А как посчитать что из них максимальное, а что минимальное?
PS А если просто прочитать read(f,a[i,j]); как матрицу из файла(двумерный массив)И потом проверить на максимальный и минимальный элемент. Но как это будет выглядеть? Последний раз редактировалось Biatov, 15.03.2010 в 18:03. |
|
#8
|
||||
|
||||
|
Всем спасибо!
|