![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Пожалуйста, ответьте на несколько вопросов:
1) На форме имеется поле Memo. При запуске программы слово "Memo1" отображается в поле. Как его убрать??? 2) Имеются функции, вычисляющие среднее арифметическое и среднее геометрическое: Код:
function SrArifm:Real; begin Result:=(StrToInt(Form1.MaskEdit1.Text)+StrToInt(Form1.MaskEdit2.Text))/2 end; function SrGeom:Real; begin Result:=Sqrt(StrToInt(Form1.MaskEdit1.Text)*StrToInt(Form1.MaskEdit2.Text)) end; При выводе ответа на поле Memo, среднее арифметическое получается дробное число с 12-ю знаками после запятой и ответ неправильный. Как это исправить??? Пожалуйста, помогите. Заранее благодарен))) Последний раз редактировалось Andrew1266, 12.12.2010 в 06:13. |
|
#2
|
|||
|
|||
|
1) Очистить свойство Lines в инспекторе объектов
2) Для начала - пользуемся тегами (иначе будет бан). А что ты хотел. Компьютер считает приблизительно. Особенно, при использовании старого типа real. а) Измени тип функций на Double. б) Подключи модуль Math и воспользуйся функцией RoundTo для округления до каког-нить разумного знака (например, до 1 знака посде запятой для ср. арифметического). Вообще, можно и руками округлить: Код:
function SrArifm:Double; begin Result:=(StrToInt(Form1.MaskEdit1.Text)+StrToInt(Form1.MaskEdit2.Text))/2; Result := Round(Result*10)/10; end; |
|
#3
|
||||
|
||||
|
имеется подобная задача.
дано натуральное число. найти среднее арифметическое значение нечетных чифр числа. |
|
#4
|
||||
|
||||
|
Цитата:
Код:
function Average(InputVal: Integer): Real;
var
Sum, Temp, Count: integer;
begin
Sum := 0;
Count := 0;
repeat
Temp := InputVal mod 10;
InputVal := InputVal div 10;
if ((Temp mod 2) <> 0) then
begin
Sum := Sum + Temp;
Inc(Count);
end;
until (InputVal = 0);
Result := RoundTo(Sum / Count, -2);
end; |
|
#5
|
|||
|
|||
|
C Round - выдаёт ошибку!
А как подключить модуль Math??? Как воспользоваться функцией Format??? |
|
#6
|
|||
|
|||
|
Посмотрите, вот код, может быть найдёте ошибку? Заранее благодарен.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ExtCtrls, ComCtrls, StdCtrls, Mask, Buttons;
type
TForm1 = class(TForm)
MaskEdit1: TMaskEdit;
MaskEdit2: TMaskEdit;
Button1: TButton;
RadioGroup1: TRadioGroup;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Label1: TLabel;
Button2: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function SrArifm: double;
begin
result:= (StrToInt(Form1.MaskEdit1.Text)+StrToInt(Form1.MaskEdit2.Text) )/2
end;
function SrGeom: double;
begin
result:=sqrt(StrToInt(Form1.MaskEdit1.Text)*StrToInt(Form1.MaskEdit2.Text))
end;
procedure count;
begin
if Form1.RadioGroup1.ItemIndex=0
then Form1.Memo1.Lines.Append(FloatToStr(SrArifm))
else Form1.Memo1.Lines.Append(FloatToStr(SrGeom))
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
count;
MaskEdit1.Clear;
MaskEdit2.Clear;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.Последний раз редактировалось Admin, 14.12.2010 в 21:27. |
|
#7
|
||||
|
||||
|
Цитата:
Код:
uses Windows, Messages, ..., ..., Math; Цитата:
P.S. Теги где??? |
|
#8
|
|||
|
|||
|
Что такое теги??? Как их использовать??
|
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
||||
|
||||
|
Задача:
Дано натуральное число, найти среднее арифметическое значение цифр числа, стоящих на нечетных местах. немного набросил. постоянно выдает 0. примечание: массив тут НУЖЕН(мне нужен) Код:
var b,c,i,z: integer;
val: real;
a: array of integer;
.......
if radiobutton5.Checked=true then
begin
SetLength(a, strtoint(edit8.Text));
if length(edit8.Text) mod 2=1 then c:=1 else c:=2;
i:=c;
while i<length(edit8.Text) do
begin
a[i]:=z mod 10;
z:=z div 100;
i:=i+2;
b:=b+1;
val:=val+a[i];
end;
val:=val / b;
val:= Round(val*100)/100;
listbox3.Items.Add(floattostr(val));
end;укажите мою ошибку |