Troca de Sinal
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.
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
Curtidas 0
Respostas
Lucas Silva
14/01/2004
Olha só..
esse código tá errado cara.
o if é pra você comparar alguma coisa...
tipo assim..
ai dá certo...
sobre o [b:14c726a2df]- A[/b:14c726a2df] faz o seguinte...
______________
dê uma olha da neste código...
Deu pra entender + ou -???
Qualquer dúvida estamos ai...
Lucas!
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!
GOSTEI 0
Barcelos
14/01/2004
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
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
GOSTEI 0
Diegobarcelos
14/01/2004
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á.
GOSTEI 0
Diegobarcelos
14/01/2004
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
GOSTEI 0
Barcelos
14/01/2004
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:
Se não ficou mais claro, me dá um toque...
Barcelos
osbarcelos@hotmail.com
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
GOSTEI 0
Fabio.hc
14/01/2004
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
GOSTEI 0
Barcelos
14/01/2004
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
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
GOSTEI 0