![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Мне нужна программа ,или может у кого есть готовая.
Суть программы. Я пишу в мемо цифры,или едит как удобнее,такие цифры 9.72 11.68 7.57 6.28 4.91 5.50 и тд далее я задаю границы ,например: 4.90;5.90 и программа должна посчитать сколько входят в цифр в эту границу или какие цифры. Или что ни будь подобное подскажите,буду очень благодарен. |
|
#2
|
|||
|
|||
|
мой друг написал мне вот это ,но я не смог разобраться ,цитирую:
Кидаешь на форму два едита для границ и едит для чисел и кнопку, для старта программы Дальше объявляешь переменную str типа string (туда скинем твой массив чисел), переменную типа a real (текущее обрабатываемое число), переменную типа k integer (количество чисел). Код:
str: string; a: real; k: integer; В событии кнопки OnClick пишешь код для обнуления переменной количества чисел. Код:
k := 0; Код:
str := edit3.text; edit3.text := ''; дальше будем резать строку Код:
while pos(' ',str) <> 0 do //если у нас есть пробелы в строке
begin
a := strtofloat(copy(str,1,pos(' ',str)-1)); //Записываем в переменную а новое число
if (a >= strtofloat(edit1.text)) and (a <= strtofloat(edit2.text)) then //проверяем вхождение в рамки edit1 - для минимального значение edit2 - для максимального значения
begin
edit3.text := edit3.text + a + ' '; //выводим подходящие числа в edit3
inc(k); //Считаем количество попаданий в рамки
end;
end;у нас осталось последнее число в переменной str (если в конце строки не было пробела) проверяем его Код:
if (strtofloat(str) >= edit1.text) and (strtofloat(str) <= edit2.text) then
begin
edit3.text := edit3.text + str;
inc(k);
end;можно использовать showmessage, но я сделаю так: Код:
edit3.text := 'Кол-во чисел ='+ inttostr(k) + ' числа: '+ edit3.text; 1 и 2 скрипт я написал,а вот что ниже вставлять не пойму куда |
|
#3
|
|||
|
|||
|
А я так понимаю, что все это вставлять в обработчик нажатия кнопки.
|
|
#4
|
|||
|
|||
|
Код:
procedure TForm7.Button1Click(Sender: TObject);
begin
k := 0;
str := edit3.text;
edit3.text := '';
while pos(' ',str) <> 0 do //если у нас есть пробелы в строке
begin
a := strtofloat(copy(str,1,pos(' ',str)-1)); //Записываем в переменную а новое число
if (a >= strtofloat(edit1.text)) and (a <= strtofloat(edit2.text)) then //проверяем вхождение в рамки edit1 - для минимального значение edit2 - для максимального значения
begin
edit3.text := edit3.text + a + ' '; //выводим подходящие числа в edit3
inc(k); //Считаем количество попаданий в рамки
end;
end;
if (strtofloat(str) >= edit1.text) and (strtofloat(str) <= edit2.text) then
begin
edit3.text := edit3.text + str;
inc(k);
end;
edit3.text := 'Кол-во чисел ='+ inttostr(k) + ' числа: '+ edit3.text;
end;
end.вот так вот? |
|
#5
|
||||
|
||||
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
i: Integer;
f: Real;
f1, f2: Real;
n: Integer;
begin
DecimalSeparator:='.';
f1:=StrToFloat(Edit2.Text);
f2:=StrToFloat(Edit3.Text);
n:=0;
s:=Edit1.Text;
while s<>'' do
begin
i:=Pos(' ', s);
if i>0 then
begin
f:=StrToFloat(Trim(Copy(s, 1, i)));
s:=Trim(Copy(s, i, Length(s)));
end else
begin
f:=StrToFloat(s);
s:='';
end;
if (f>=f1) and (f<=f2) then Inc(n);
end;
Edit4.Text:=IntToStr(n);
end;
end.изначально: Edit1 = 9.72 11.68 7.57 6.28 4.91 5.50 Edit2 = 4.90 Edit3 = 5.90 Edit4 = пятница |
|
#6
|
|||
|
|||
|
этот код у вас работает?
у меня 8 версия вставил скрипт,и он выделил красным это DecimalSeparator:='.'; |
|
#7
|
|||
|
|||
|
или сможете сделать исходник,или саму программу?
|