GARANTIR DESCONTO

Fórum Troca de Sinal #206378

14/01/2004

0

Olá pessoal, estou começando a estudar Delphi, e to estudando por 1 livro que comprei, e tem 1 exercício que não consigo fazer, pra quem mexe deve ser simples, é o seguinte, pede pra ler um valor inteiro positivo ou negativo e mostrar o valor lido sempre como positivo.

exemplo:

digito -3

resultado 3

---------------------------------

digito 3

resultado 3

---------------------------------

como faço pro Delphi interpretar o sinal?

a lição do livro que tem o exercício eh feita usando if .. else, só que claro que não tem o exercício resolvido hehe, e queria saber como fasso pra que o delphi entenda o sinal, tipo assim

if (Resultado := -A) then

Resultado := -A

tipo assim, quis dizer no comando if que o resultado for -3 por exemplo

e na linha de baixo ele conseguisse pegar e fazer o seguinte

resultado := - (-3)

que seria 3 interpretando os sinais, nao sei se entenderam hehe.

Desde já agradeço a ajuda.


Diegobarcelos

Diegobarcelos

Responder

Posts

14/01/2004

Lucas Silva

Olha só..
if (Resultado := -A) then 

esse código tá errado cara.

o if é pra você comparar alguma coisa...

tipo assim..
if Resultado = A then

ai dá certo...

sobre o [b:14c726a2df]- A[/b:14c726a2df] faz o seguinte...
var a: real;
begin
a := -5;
if resultado = a then



______________

dê uma olha da neste código...

procedure TForm1.Button1Click(Sender: TObject);
var resultado: Real;
begin
    resultado := 2 - 7;
    if resultado = - 5 then
     ShowMessage(´Deu Negativo!´)
end;


Deu pra entender + ou -???

Qualquer dúvida estamos ai...

Lucas!


Responder

Gostei + 0

14/01/2004

Barcelos

Olá,

Neste caso, basta você testar se o valor é maior ou menor que zero.
Dá uma olhada nesta função:

function Positivo(Valor : Double) : Double;
begin
//Se o valor digitado for maior que zero,
//mantém o valor
If Valor > 0 then Result := Valor
else
//Se o valor for menor que zero, basta multiplicar por -1
//para inverter o sinal
Result := Valor * -1;
end;

Espero ter ajudado,

Barcelos
osbarcelos@hotmail.com


Responder

Gostei + 0

14/01/2004

Diegobarcelos

Sim entendi o código, só que o problema é que eu digito 1 valor qualquer num edit e ai o valor no código nao pode ser constante, tem que usar um codigo que interprete quando o sinal for negativo ele passe pra positivo, deve existir uma função que faça a troca de sinal quando for negativo, e ai quando for positivo copia como está.


Responder

Gostei + 0

14/01/2004

Diegobarcelos

Olá meu ´parente´ hehe, também sou Barcelos, obrigado, não sei como não tinha pensado nisso antes, lógicpo que era questão de verificar se o valor era maior que zero, senão fosse só inverter o sinal, era questão de acertar a condição, obrigado pela ajuda, funcionou o código agora.

--------------------------------------------------------------------------------------

Olá, Neste caso, basta você testar se o valor é maior ou menor que zero. Dá uma olhada nesta função: function Positivo(Valor : Double) : Double; begin //Se o valor digitado for maior que zero, //mantém o valor If Valor > 0 then Result := Valor else //Se o valor for menor que zero, basta multiplicar por -1 //para inverter o sinal Result := Valor * -1; end; Espero ter ajudado, Barcelos osbarcelos@hotmail.com



Responder

Gostei + 0

14/01/2004

Barcelos

Bom, vamos no passo-a-passo,

Supondo que a sua aplicação tem 2 edits, um para digitar o valor, um para receber o valor convertido, e um botão que calcula a função, no evento OnClick do Botão tente o seguinte:

procedure TForm1.Button1Click(Sender: TObject);
var Valor,Resultado : Double;
begin
    //Converte o valor que você digitou em número (Double)
    Valor := StrToFloat(Edit1.Text);  
    //faz o mesmo que a função acima,
    //checa se se é maior ou menor que zero
    If Valor > 0 then Resultado := Valor 
   else
     Resultado := Valor * -1; 
   //Converte o resultado em uma String e coloca no Edit2 
    Edit2.Text := FloatToStr(Resultado);
end;


Se não ficou mais claro, me dá um toque...

Barcelos
osbarcelos@hotmail.com


Responder

Gostei + 0

14/01/2004

Fabio.hc

Sim entendi o código, só que o problema é que eu digito 1 valor qualquer num edit e ai o valor no código nao pode ser constante, tem que usar um codigo que interprete quando o sinal for negativo ele passe pra positivo, deve existir uma função que faça a troca de sinal quando for negativo, e ai quando for positivo copia como está.


[b:c050bd3c48]Abs(X)[/b:c050bd3c48] devolve o valor absoluto do argumento X.

Exemplo:

X:=3;
Resultado:=Abs(X); // retorna 3


X:=-3;
Resultado:=Abs(x); // retorna 3


Responder

Gostei + 0

14/01/2004

Barcelos

Estamos aí pra isso, amigo (ou ´parente´ hehehe). Um Barcelos a mais no fórum é sempre bem vindo!!!! Passa depois no Botequim do Debug e toma uma por minha conta!!! :lol: :lol: :lol:


PS.

Fabio.Hc, também tinha pensado em usar a função Abs, mas como era apenas para um execício, usando if..else acho que esta ´rotinazinha´ está de bom tamanho
:D

Barcelos
osbarcelos@hotmail.com


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar