Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
1.2 Mб
Скачать

5.2.3. Входные и выходные данные

Входными данными являются:

  • путь к текстовому файлу, содержащему целые числа;

  • границы a и b интервала, которому принадлежат искомые числа.

Выходными данными являются:

  • наименьшее нечетное и наибольшее числа из интервала [ab], содержащиеся в указанном файле с числами.

5.2.4. Сообщения оператору

В случае если задан путь к несуществующему файлу или у программы нет доступа к файлу, выводится сообщение, что не удалось открыть указанный файл (см. рисунок 12). Если задана нижняя граница интервала больше, чем верхняя, выводится сообщение об этом (см. рисунок 10). Если текстовый файл содержит не только целые числа, выводится соответствующее сообщение (см. рисунок 11). Если в полях ввода границ интервала введены нечисловые данные, выводится сообщение (см. рисунок 13).

6. Приложение

6.1. Исходный код модуля UnitMain.Pas

unit UnitMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ShellAPI;

type

TFormMain = class(TForm)

LabelFileName: TLabel;

EditFileName: TEdit;

ButtonOpen: TButton;

OpenDialog: TOpenDialog;

LabelA: TLabel;

EditA: TEdit;

LabelB: TLabel;

EditB: TEdit;

ButtonFind: TButton;

ButtonHelp: TButton;

LabelResults: TLabel;

LabelMinOdd: TLabel;

EditMinOdd: TEdit;

LabelMax: TLabel;

EditMax: TEdit;

procedure ButtonFindClick(Sender: TObject);

procedure ButtonOpenClick(Sender: TObject);

procedure ButtonHelpClick(Sender: TObject);

procedure EditFileNameChange(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormMain: TFormMain;

implementation

{$R *.dfm}

// Обработчик щелчка по кнопке поиска

procedure TFormMain.ButtonFindClick(Sender: TObject);

var

f: TextFile; // Файл, в котором ищутся строки

a: Integer; // Нижняя граница интервала

b: Integer; // Верхняя граница интервала

minOdd: Integer; // Минимальное нечетное число

max: Integer; // Максимальное число

temp: Integer; // Временная переменная

begin

// Получение исхоных данных

try

a := StrToInt(EditA.Text);

b := StrToInt(EditB.Text);

except

ShowMessage('Нецелочисленное значение границы интервала');

Exit;

end;

if a > b then

begin

ShowMessage('Нижняя граница интервала больше верхней');

Exit;

end;

AssignFile(f, EditFileName.Text);

// Инициализация рзультатов

minOdd := b + 1;

max := a - 1;

// Поиск по файлу

try

Reset(f);

while not EoF(f) do

begin

if EoLn(f) then

Readln(f);

if not EoF(f) then

begin

try

Read(f, temp);

except

ShowMessage('Нецелочисленные данные в исходном файле');

Exit;

end;

if (temp >= a) and (temp <= b) then

begin

if (temp < minOdd) and Odd(temp) then

minOdd := temp;

if temp > max then

max := temp;

end;

end;

end;

CloseFile(f);

// Вывод результатов

if minOdd <= b then

EditMinOdd.Text := IntToStr(minOdd)

else

EditMinOdd.Text := 'Не найдено';

if max >= a then

EditMax.Text := IntToStr(max)

else

EditMax.Text := 'Не найдено';

LabelResults.Visible := true;

LabelMinOdd.Visible := true;

LabelMax.Visible := true;

EditMinOdd.Visible := true;

EditMax.Visible := true;

except

ShowMessage('Не удалось открыть файл "' + EditFileName.Text + '"');

end;

end;

// Обработчик щелчка по кнопке открытия файла

procedure TFormMain.ButtonOpenClick(Sender: TObject);

begin

if OpenDialog.Execute then

EditFileName.Text := OpenDialog.FileName;

end;

// Обработчик щелчка по кнопке вызова справки

procedure TFormMain.ButtonHelpClick(Sender: TObject);

begin

ShellExecute(0, 'open', 'MinOddMaxNum.chm', nil, nil, SW_MAXIMIZE);

end;

// Обработчик изменения исходных данных

procedure TFormMain.EditFileNameChange(Sender: TObject);

begin

// Сокрытие результатов

LabelResults.Visible := false;

LabelMinOdd.Visible := false;

LabelMax.Visible := false;

EditMinOdd.Visible := false;

EditMax.Visible := false;

end;

end.