![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() ПОМОГИТЕ, ПОЖАЛУЙСТА, СРОЧНО!!!
На форме имеются следующие компоненты: поле Memo, два компонента MaskEdit, кнопка Button, компонент Radiogroup внутри него две радиокнопки (Radiobutton). - Как настроить свойства масок в полях редактирования, чтобы туда можно было вводить только двухзначные числа??? - Как в окне кода запрограммировать две функции: SrArifm и SrGeom, которые должны считать среднее арифметическое (половину от суммы) и среднее геометрическое (квадратный корень из произведения) двух чисел??? - Как создать процедуру Count, которая выполняет над числами, введенными в поля редактирования ту операцию, которая выбрана в Радиогруппе и помещает результат в поле Memo??? - Как запрограммировать кнопку, чтобы она вызывала процедуру Count и затем очищала редактируемые поля??? - Как отредактировать программу так, чтобы результат в поле Memo не обновлялся каждый раз после нажатия вычислить, а добавлялся на следующую строчку??? Заранее, большое спасибо откликнувшимся!!! Последний раз редактировалось Andrew1266, 10.12.2010 в 05:52. |
#2
|
|||
|
|||
![]() И в чем проблема? все по пунктам расписано. не пойму в чем вопрос то?
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#3
|
|||
|
|||
![]() просто я в делфи вообще не шарю.... куда заходить, что нажимать???
|
#4
|
|||
|
|||
![]() Для начала запустить Делфи.
далее п1. Создать новый проект. и далее по пунктам. не совсем понимаю какую вы помощь хотите получить? Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение" |
#5
|
|||
|
|||
![]() У maskedit-ов ставишь editmask в 00
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, ComCtrls, StdCtrls, Mask, Buttons; type TForm1 = class(TForm) medt1: TMaskEdit; btn1: TBitBtn; medt2: TMaskEdit; rg1: TRadioGroup; mmo1: TMemo; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function srarifm:Real; begin Result:=(StrToInt(Form1.medt1.text)+strtoint(Form1.medt2.text))/2 end; function srgeom:Real; begin Result:=Sqrt(StrToInt(Form1.medt1.text)*strtoint(Form1.medt2.text)) end; procedure count; begin if Form1.rg1.ItemIndex=0 then Form1.mmo1.Lines.Append(FloatToStr(srarifm)) else Form1.mmo1.Lines.Append(FloatToStr(srgeom)) end; procedure TForm1.btn1Click(Sender: TObject); begin count; end; end. |
#6
|
|||
|
|||
![]() Огромное спасибо!!!
|
#7
|
|||
|
|||
![]() При запуске программы слово "Memo1" отображается в поле. Как его убрать???
И при выводе ответа на поле Memo, среднее арифметическое получается дробное число с 12-ю знаками после запятой. Как это исправить??? Последний раз редактировалось Andrew1266, 12.12.2010 в 06:11. |
#8
|
||||
|
||||
![]() Цитата:
Или в OnCreate формы: Код:
Memo1.Clear; |
#9
|
|||
|
|||
![]() Посмотрите, вот код:
Код:
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. И при выводе ответа на поле Memo, среднее арифметическое получается дробное число с 12-ю знаками после запятой. Как это исправить??? |
#10
|
||||
|
||||
![]() Цитата:
Код:
procedure count; begin if Form1.RadioGroup1.ItemIndex=0 then Form1.Memo1.Lines.Append(IntToStr(Round(SrArifm))) else Form1.Memo1.Lines.Append(IntToStr(Round(SrGeom))) end; |
#11
|
|||
|
|||
![]() Да! Получается без дробной части, но ответ-то неправильный! Например, вычисляя (10+20)/2 получается 14.
|
#12
|
|||
|
|||
![]() Вычисления с плавающей точкой неточные, отсюда и ошибка.
Код:
procedure count; begin if Form1.RadioGroup1.ItemIndex=0 then Form1.Memo1.Lines.Append(floattostrf(SrArifm,fffixed,6,3)) else Form1.Memo1.Lines.Append(floattostrf(SrGeom,fffixed,6,3)) end; Последний раз редактировалось kalinochkind, 15.12.2010 в 17:36. |
#13
|
|||
|
|||
![]() Цитата:
Новичок По умолчанию procedure count; begin if Form1.RadioGroup1.ItemIndex=0 then Form1.Memo1.Lines.Append(floattostrf(SrArifm,fffix ed,6,3)) else Form1.Memo1.Lines.Append(floattostrf(SrGeom,fffixe d,6,3)) end; Ответить с цитированием Не получается!!! Выдаёт ошибку, выделяя 6, 3 у Fixed |
#14
|
|||
|
|||
![]() Убери пробел: fffixed,6,3
|
#15
|
|||
|
|||
![]() Я так понимаю, правильного ответа, мне никогда не получить... =(
Да, идёт округление (или отбрасывание) до трёх знаков после запятой, но ответ-то у среднего арифметического неправильный!!! Последний раз редактировалось Andrew1266, 16.12.2010 в 09:37. |