imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 04.03.2005, 00:31     # 1
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
Считаем проценты под 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 вне форума  
Старый 04.03.2005, 02:25     # 2
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
steelik
div - целочисленное деление, ставь вместо ':' и считай с типом integer.

>если в Edit1 ничего не ввели,
if edit1.text="" then ...

>и как поотом вывести? В те же самые Edit-ы.
edit1.text:=IntToStr(x);
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 04.03.2005, 10:09     # 3
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
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 вне форума  
Старый 04.03.2005, 12:54     # 4
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
steelik
>Если в калькуляторе посчитать, одно получается, он считаеть подругому
Пример давай. div отбрасывает дробную часть. Если оно тебе не подходит, попробуй так X :=Round(((Y*Z+100)/S)*100);

>Что-то он там на несоответствие типов boolean, опять ругается!
Кавычки одинарные поставь.
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 04.03.2005, 12:59     # 5
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
Попробуй в
Код:
X :=( ( (Y*Z)+100 ) div S)*100;
поменять местами умножение и целочисленное деление
Код:
x := ((y * z + 100) * 100) div s;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  
Старый 04.03.2005, 20:40     # 6
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
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 вне форума  
Старый 04.03.2005, 20:48     # 7
Madness
KpTeaM
 
Регистрация: 31.10.2002
Адрес: Russia
Пол: Male
Сообщения: 3 261

Madness СуперБогMadness СуперБогMadness СуперБог
Madness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБогMadness СуперБог
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
__________________
Над струнами вен моих
Лезвия осени,
Их сталь леденящая
В просинь рук просится...
©Темнозорь
Madness вне форума  
Старый 05.03.2005, 00:39     # 8
steelik
Member
 
Аватар для steelik
 
Регистрация: 30.09.2002
Сообщения: 320

steelik Путь к славе только начался
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>''
then begin Button1.Enabled:=true end;


Operator not applicable to this operand type
В чем дело? И подскажи, куда лучше вставить эту проверку, в какое событие?
steelik вне форума  
Старый 05.03.2005, 01:13     # 9
Gunslinger
Advanced Member
 
Аватар для Gunslinger
 
Регистрация: 15.09.2004
Адрес: Украина, Хмельницкий
Сообщения: 403

Gunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собойGunslinger Имеются все основания чтобы гордиться собой
Вставь во все события изменения edit1, edit2, edit3. Только не забудь написать
if Edit1.Text<>'' AND Edit2.Text<>'' AND Edit3.Text<>''
then begin Button1.Enabled:=true end
else begin Button1.Enabled:=false end;
Gunslinger вне форума  
Старый 05.03.2005, 10:29     # 10
Ghost
::VIP::
Звезда первого сезона
Молчун-2004
 
Аватар для Ghost
 
Регистрация: 24.08.2002
Сообщения: 1 575

Ghost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех ГуруGhost Отец (мать) всех Гуру
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.
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы!
Ghost вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 10:24.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.