![]() |
Считаем проценты под Delphi
как проверить, если в Edit1 ничего не ввели, значит считать X:= X=(S : ((Y*Z)+100))*100 , если Edit2 - то Y=((S-X) : Z) : (X : 100)
Также, какой тип лучше использовать, чтобы посчитать всё это и как поотом вывести? В те же самые Edit-ы. Желательно использовать Integer, даже если числа получаются нецелочисленные, всё равно нужны только округлённые! вот как условия задачи мои звучат: edit1 (x) вклад edit2 (y) процент edit3 (z) срок хранения (г.) edit4 (s) итоговая сумма X=(S : ((Y*Z)+100))*100 Y=((S-X) : Z) : (X : 100) Z=(S-X) : ((X : 100)*Y) S=X+((X : 100)*Y)*Z По этим выражениям рассчитываются все представленные значения. Как я уже говорил - по трем известным вычисляется одна неизвестная. Вклад осуществляется в рублях, обычное число от 1-го и до бесконечности, итоговая сумма то же самое, процент от 1 до 100, срок хранения от 1-го года и до бесконечности, так же срок хранения только в годах, не может быть значений типа 0,8 или 2,4 т.к. в году 12 месяцев, да и лишний головняк никчему. |
steelik
div - целочисленное деление, ставь вместо ':' и считай с типом integer. >если в Edit1 ничего не ввели, if edit1.text="" then ... >и как поотом вывести? В те же самые Edit-ы. edit1.text:=IntToStr(x); |
var
X : Integer; Y : Integer; Z : Integer; S : Integer; procedure TForm1.FormCreate(Sender: TObject); begin X := 0; Y := 0; Z := 0; S := 0; Edit1.Text := '0'; Edit2.Text := '0'; Edit3.Text := '0'; Edit4.Text := '0'; end; procedure TForm1.Button1Click(Sender: TObject); begin X:=StrToInt(Edit1.Text); Y:=StrToInt(Edit2.Text); Z:=StrToInt(Edit3.Text); S:=StrToInt(Edit4.Text); X :=( ( (Y*Z)+100 ) div S)*100; Edit1.Text := IntToStr(X); end; Если в калькуляторе посчитать, одно получается, он считаеть подругому 8( И потом напиши пожалуйста пример с проверкой if... Что-то он там на несоответствие типов boolean, опять ругается! |
steelik
>Если в калькуляторе посчитать, одно получается, он считаеть подругому Пример давай. div отбрасывает дробную часть. Если оно тебе не подходит, попробуй так X :=Round(((Y*Z+100)/S)*100); >Что-то он там на несоответствие типов boolean, опять ругается! Кавычки одинарные поставь. |
Попробуй в
Код:
X :=( ( (Y*Z)+100 ) div S)*100;Код:
x := ((y * z + 100) * 100) div s; |
x := ((y * z + 100) * 100) div s;
Вот так вот заработало! Madness Ты очевидно имел введу if Edit1.Text <> '' then begin ... я так долго не работал с дельфи, что воспринял "=" вполне нормально, потому что частенько на перле сижу. Как сделать проверку, пока не будет изменено три Edit-а, ну или не введены значения... не активизировать Button1. Также, как правильно перевести, на дельфийския язык... снова проблемы Y=((S-X) : Z) : (X : 100) Z=(S-X) : ((X : 100)*Y) S=X+((X : 100)*Y)*Z x := ((y * z + 100) * 100) div s; Вот так вот заработало! Madness Ты очевидно имел введу if Edit1.Text <> '' then begin ... я так долго не работал с дельфи, что воспринял "=" вполне нормально, потому что частенько на перле сижу. Как сделать проверку, пока не будет изменено три Edit-а, ну или не введены значения... не активизировать Button1. Также, как правильно перевести, на дельфийския язык... снова проблемы Y=((S-X) : Z) : (X : 100) Z=(S-X) : ((X : 100)*Y) S=X+((X : 100)*Y)*Z |
steelik
Мдя, ты хоть попробовать сделать пытался или за тебя все делать нужно? >Как сделать проверку, пока не будет изменено три Edit-а, ну или не введены значения... не активизировать Button1. if edit1.text<>'' and ... and edit100.text<>'' then button1.enabled:=true По дефолту сделай enabled (иль enable, не помню) false. Y=(S-X)*100/X/Z иль (S-X)*100 div X*Z Z=(S-X)/X*100/Y иль (S-X)*100 div X*Y S=X+X/100*Y*Z иль X+X*Y*Z div 100 |
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>''
then begin Button1.Enabled:=true end; Operator not applicable to this operand type В чем дело? И подскажи, куда лучше вставить эту проверку, в какое событие? |
Вставь во все события изменения edit1, edit2, edit3. Только не забудь написать
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>'' then begin Button1.Enabled:=true end else begin Button1.Enabled:=false end; |
steelik
Ффух... Тебе это нужно? Код:
unit Unit1; |
| Часовой пояс GMT +4, время: 13:57. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.