1. Необходимо использовать Тэг
[сode] для исходников, Да мне тоже не нравится зеленый цвет, и не очень удобно читать. Но администрация сайта обещала сделать подсветку синтаксиса. И при необходимости можно будет ту или иную ветку форума, сгенерировать в другой форма. (При условии, что он будет оформлен по правилам) А у вас Код не записан в Тег [Сode].
2. Nik +1.
3. Ravil -1.
Какая ошибка, на какой строке. Вы думаете кому то нужно читать ваш КОД ?.4. Где пишете в FPC или в Lazarus-е. Какая OC.
5. И конечно спасибо, за то что вы думаете, что тут одни Ясновидцы (Просьба больше не смотреть Битву Экстросенцев на ТНТ).
6. Скорее всего если нет ошибок в коде, то возможно вы не учли следущего, при заполнении массивов тогоже a_b мы его заполняем не весь... т.е в остатке лежит мусор, я сделал процедуру коррекции см код во избежании ошибки -
SIGFPE — сигнал, посылаемый процессу, при попытке выполнения ошибочной арифметической операции.Теперь по делу из-за того, что не понятно где ошибка и какая. Решил задачу на Lazarus-е.
Вот Код:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
const
n = 50; a = 20; b =40;
type
mass = array [1..n] of real;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
Procedure ShowResultFromMass(var AMass:mass);
Procedure CorrectMass(var AMass:mass; MaxIndex:Integer);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure realgenerator;
var
f : file of real;
y : real;
i : integer;
begin
randomize;
AssignFile(f, 'c:\digit.dat');
Rewrite(f);
for i:=1 to n do
begin
y:=random(50);
Write(f,y);
end;
CloseFile(f);
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var
f : file of real;
y : real;
i : integer;
IndexBefore_A, IndexA_B,
IndexAfter_B, IndexFull :Integer;
before_a, a_b, after_b, Full : mass;
begin
IndexBefore_A:=1;
IndexA_B :=1;
IndexAfter_B :=1;
IndexFull :=1;
realgenerator; //Генерируем новый файл с данными.
AssignFile(f,'c:\digit.dat');
Reset(f);
while not Eof(f) do
begin
Read(f, y);
Full[IndexFull]:=y;
Inc(IndexFull);
if y<a then
begin
before_a[IndexBefore_A]:=y;
Inc(IndexBefore_A);
end;
if ((y >=a) and (y<=b)) then
begin
a_b[IndexA_B]:=y;
Inc(IndexA_B);
end;
if y>b then
begin
after_b[IndexAfter_B]:=y;
Inc(IndexAfter_B);
end;
end;// while not Eof(f) do
CloseFile(F);
//коррекция массивов (т.к. Мы не полностью заполнили массивы, где то есть мусор)
CorrectMass(before_a,IndexBefore_A);
CorrectMass(a_b,IndexA_B);
CorrectMass(after_b,IndexAfter_B);
//Вывод на экран результатов
Memo1.Lines.Add('Исходный массив:');
ShowResultFromMass(Full);
Memo1.Lines.Add('Массив Before_A:');
ShowResultFromMass(before_a);
Memo1.Lines.Add('Массив a_b:');
ShowResultFromMass(a_b);
Memo1.Lines.Add('Массив after_b:');
ShowResultFromMass(after_b);
end;
procedure TForm1.ShowResultFromMass(var AMass: mass);
var I:Integer;
S:String;
begin
S:='';
//If AMass[1]=Nil then exit;
for i:=1 to High(AMass) do
if AMass[I]<> -1 then
S:=S+FloatToStr(AMass[I])+'; ';
Memo1.Lines.Add(S);
end;
procedure TForm1.CorrectMass(var AMass: mass; MaxIndex: Integer);
var I:Integer;
begin
for I:=MaxIndex to High(AMass) do
AMass[I]:=-1;
end;
end.
Вот Скрин:

В Аттаче исходники: