Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 17:09   #1
AMGSoUL
Новичок
Джуниор
 
Регистрация: 03.12.2012
Сообщений: 2
По умолчанию Задача чтение из файла и сортировка (Delphi)

Здравствуйте, помогите пожалуйста с решением такой задачи.
Нужно написать программу, выполняющую чтение целых чисел из файла и производящую их вывод в отсортированном виде по 5 чисел в строке на экран. Процедуру сортировки нужно вынести в отдельную процедуру (модуль). Подготовить набор тестов для белого и черного тестирования данной программы.
За любую помощь буду очень признателен.
AMGSoUL вне форума Ответить с цитированием
Старый 03.12.2012, 23:15   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вопрос 1. числа все должны быть отсортированы, или сортировать по 5 штук (выводимые). Судя по тому, что процедуру сортировку в задании требуется вынести в отдельную процедуру, не исключаю, что числа должны сортироваться именно по 5 штук (считали 5 чисел, вызвали процедуру сортировку, вывели числа в строку. и так в цикле до тех пор, пока файл с числами не кончится). я прав?

Вопрос 2. что есть "белое" и "чёрное" тестирование?

Вопрос 3. Метод сортировки не оговаривается (т.е. любым можно сортировать?

ну и последний вопрос - Вы что-то самостоятельно писать собираетесь? Или надеятесь на доброго "дядя"-программиста, который прийдёт и полностью за Вас напишет код?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.12.2012, 08:55   #3
AMGSoUL
Новичок
Джуниор
 
Регистрация: 03.12.2012
Сообщений: 2
По умолчанию

Выкладываю свой код программы (хоть он немного и кривоватый). Не могу сделать только, чтобы выводилось по 5 чисел в строке.
http://ru.wikipedia.org/wiki/Стратег...«Белого_ящика»
http://ru.wikipedia.org/wiki/Тестиро..._чёрного_ящика
Достаточно по 2 примера того и того. Просто я тоже не совсем понимаю эти тестирования.
Если есть способ упростить задачу, тоже буду рад.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Label3: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    GroupBox1: TGroupBox;
    procedure Open;
    procedure Sort;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure RadioButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:array[0..9999999]of integer;
  
implementation

{$R *.dfm}

procedure TForm1.Open;
var i,n,n1,colvo,a,b:integer;
str,s:string;
begin
colvo:=0;
str:='';
for i:=0 to Memo1.Lines.Count do begin
  s:=Memo1.Lines[i]+'asd';
  n:=0;
while n<length(s) do begin
 if s[n] in ['0'..'9'] then begin
    a:=n;
    b:=1;
    n1:=n+1;
    while n1<length(s) do begin
     if s[n1] in ['0'..'9'] then
      b:=b+1 else
       begin
       str:=Copy(s,a,b);
       colvo:=colvo+1;
       Memo2.Lines.Add(str);
       str:='';
       b:=1;
       n:=n1;
       n1:=length(s);
       end;
     inc(n1);
    end;
 end;
 inc(n);
 end;
end;
label3.Caption:='Чисел:'+inttostr(colvo);
end;

procedure TForm1.Sort;
var a:array[0..9999]of integer;
    n,j,i,min,max,c:integer;
    str:string;
begin
n:=Memo2.Lines.Count-1;
for i:=0 to n do
 a[i]:=Strtoint(Memo2.Lines[i]);
min:=a[0];
max:=a[0];
for i:=0 to n do
 begin
 if a[i]<min then min:=a[i];
 if a[i]>max then max:=a[i];
 end;
Memo2.Clear;
if RadioButton2.Checked then
 for i:=max downto min do begin
  for j:=0 to n do
    if i=a[j] then
      memo2.Lines.Add(Inttostr(a[j]));
    end;
if RadioButton3.Checked then
 for i:=min to max do begin
  for j:=0 to n do
    if i=a[j] then
      memo2.Lines.Add(Inttostr(a[j]));
 end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo2.Clear;
if OpenDialog1.Execute then begin
Memo1.Lines.LoadFromFile(Opendialog1.FileName);
Open;
if (Radiobutton2.Checked) or (Radiobutton3.Checked) then
 sort;

end;
end;




procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
Resize:=false;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Memo2.Clear;
Open;
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Memo2.Clear;
Open;
Sort;
end;

procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Memo2.Clear;
Open;
Sort;
end;

end.

Последний раз редактировалось AMGSoUL; 04.12.2012 в 08:56. Причина: ошибка в коде
AMGSoUL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чтение из файла (delphi) Игорь Кулакевич Помощь студентам 0 25.10.2011 22:13
СИ чтение чисел из файла, сортировка и вывод Millen Помощь студентам 1 07.03.2011 02:26
Чтение из файла Delphi VadEr Помощь студентам 2 25.10.2009 17:29
чтение файла Delphi world12_tk Помощь студентам 1 07.10.2009 08:16
Задача на чтение из файла Irondust Общие вопросы C/C++ 2 30.12.2008 14:39