| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 30.09.2002
Сообщения: 320
![]() |
Считаем проценты под 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 месяцев, да и лишний головняк никчему. |
|
|
|
|
# 2 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
steelik
div - целочисленное деление, ставь вместо ':' и считай с типом integer. >если в Edit1 ничего не ввели, if edit1.text="" then ... >и как поотом вывести? В те же самые Edit-ы. edit1.text:=IntToStr(x);
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 3 |
|
Member
Регистрация: 30.09.2002
Сообщения: 320
![]() |
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, опять ругается! |
|
|
|
|
# 4 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
steelik
>Если в калькуляторе посчитать, одно получается, он считаеть подругому Пример давай. div отбрасывает дробную часть. Если оно тебе не подходит, попробуй так X :=Round(((Y*Z+100)/S)*100); >Что-то он там на несоответствие типов boolean, опять ругается! Кавычки одинарные поставь.
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 5 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Попробуй в
Код:
X :=( ( (Y*Z)+100 ) div S)*100; Код:
x := ((y * z + 100) * 100) div s;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 6 |
|
Member
Регистрация: 30.09.2002
Сообщения: 320
![]() |
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 |
|
|
|
|
# 7 |
|
KpTeaM
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
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
__________________
Над струнами вен моих Лезвия осени, Их сталь леденящая В просинь рук просится... ©Темнозорь |
|
|
|
|
# 9 |
|
Advanced Member
Регистрация: 15.09.2004
Адрес: Украина, Хмельницкий
Сообщения: 403
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вставь во все события изменения edit1, edit2, edit3. Только не забудь написать
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>'' then begin Button1.Enabled:=true end else begin Button1.Enabled:=false end; |
|
|
|
|
# 10 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
steelik
Ффух... Тебе это нужно? Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit4: TEdit;
Button1: TButton;
procedure Button1Enable(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Enable(Sender: TObject);
begin
Button1.Enabled := not((Edit1.Text = '') or (Edit2.Text = '') or (Edit3.Text = '') or (Edit4.Text = ''));
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.OnChange := Button1Enable;
Edit2.OnChange := Button1Enable;
Edit3.OnChange := Button1Enable;
Edit4.OnChange := Button1Enable;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x, y, z, s: integer;
begin
x := StrToInt(Edit1.Text);
y := StrToInt(Edit2.Text);
z := StrToInt(Edit3.Text);
s := StrToInt(Edit4.Text);
Edit1.Text := IntToStr(((y * z + 100) * 100) div s);
Edit2.Text := IntToStr(((s - x) div z) div (z div 100));
Edit3.Text := IntToStr((s - x) div ((x div 100) * y));
Edit4.Text := IntToStr(x + (x div 100) * y * z);
end;
end.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|