PDA

Ver la Versión Completa : calcular temperatura en delphi


nemesis
04-03-2007, 17:47:17
Hola :D

yo estoy cogiendo una clase de delphi, por ahora estoy empezando. Necesito hacer un progrma que te cambie la temperature de farenheit a celcius y viceversa. ya casi lo tengo hecho pero no se como poner la formula para cambiar de celcius a farenheit que es Tc = (5/9)*(Tf-32),


begin

If Fbutton.Checked = True Then
Begin
DataPanel.Caption := FloatToStr(StrToFloat(DataInput.Text) -32 * 5/9);
End
Else If Cbutton.Checked = True Then
Begin
DataPanel.Caption := FloatToStr(StrToFloat(DataInput.Text)* 9/5 + 32);
End
Else
Begin
ShowMessage(DataInput.Text + ' Choose Farenheit or Celsius');
End;

end;

la primera formula es la que no funciona, me da un numero erroneo ya que se supose reste 32 primero pero el programa hace primero las multiplicaciones y divisiones como debe ser, so creo necesito un parentesis o algo pero no se como ponerlo.


tambien ahi alguna manera de cuando use


begin
ShowMessage(' ????????');
end;


ahi alguna manera de empezar una nueva linea en el texto de showmessage? como en c++ es \n o endl. thanks :)

Delphius
04-03-2007, 19:09:22
Hola nemesis, bienvenido a clubDelphi.

Fijate si te sirve estas funciones:

function CelciusToFarenheit(Temperatura: real): real;
begin
result := (5/9)*(Temperatura - 32);
end;

function FarenheitToCelcius(Temperatura: real): real;
begin
result := (9/5)* (Temperatura + 32);
end;

Con respecto a tu seguda pregunta... puedes agregar una segunda línea (o las que deseas) mediante el caracter ASCII: #13. Algo como esto:

'Primera Linea' + #13 + 'Este texto va en la segunda linea';

Espero haber ayudado.
Saludos,

seoane
04-03-2007, 20:20:05
Bueno Delphius parece que por fin voy a ser yo quien te corrija un calculo :p

function FarenheitToCelcius(Temperatura: real): real;
begin
result := (9/5) * Temperatura + 32;
end;

Crandel
04-03-2007, 21:50:54
Creo que los dos estan equivocados :p


function CelciusToFarenheit(Temperatura: real): real;
begin
result := (9/5) * Temperatura + 32;
end;

function FarenheitToCelcius(Temperatura: real): real;
begin
result := (5/9) * (Temperatura - 32);
end;

nemesis
04-03-2007, 23:02:43
k gracias. voy a tratar eso ahora a ver si me sale :D

gluglu
04-03-2007, 23:32:33
En este caso debe también de decir, que en cuanto al cálculo de temperaturas, el correcto es el de crandel.

Yo siempre me he sabido la fórmula de esta manera :

ºF - 32 ºC
------- = ------
9 5
... y ya que cada cual despeje lo que quiera.

Vaya, no tengo manera de ponerlo bien con el editor por más que lo intento. En palabras : ºF - 32 dividido entre 9 es igual a ºC dividido entre 5 .

nemesis
04-03-2007, 23:36:24
una pregunta, estoy haciendolo y no me sale :( yo tengo un Edit que el usuario entra alli la temperatura a convertir, cuando undes un botton que tengo el programa la convierte. una pregunta?

es Temperatura el nombre de un botton o variable? algo asi :p

Robert01
05-03-2007, 01:21:32
Hola

Temperatura es una variable real

Para escribir el valor en el Tedit habría que usar
Edit1.text:= FloatToStr(Result)


Saludos

Robert01
05-03-2007, 01:44:40
Conversión de grados centígrados o Celsius a otras varias:



FunctionCelsiusToRankine(Temperatura:real):real;
begin
result{Ra}:= (9/5)*(temperatura) + 491,67;
end;

functionCelsiusToRéaumur(Temperatura:real):real;
begin
result {°Ré} := (4/5) * Temperatura;
end;

functionCelsiusToNewton(Temperatura:real):real;
begin
result{°N} := (33/100) * Temperatura;
end;

functionCelsiusToRømer(Temperatura:real):real;
begin
result {°Rø} := (21/40) * Temperatura + 7,5;
end;

functionCelsiusToDelisle(Temperatura:real):real;
begin
result {°Da} := (3,2) * (100 − Temperatura);
end


functionCelsiusToKelvin(Temperatura:real):real;
begin
result {K} := Temperatura + 273.15;
end;



/saludos

nemesis
05-03-2007, 02:00:25
grr estoy tratando y no se, esto delphi esta dificil pa mi hehehe. aqui esta el codigo por ahora. necesito estudiar mas :confused:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
Fbutton: TRadioButton;
Cbutton: TRadioButton;
DataInput: TEdit;
DataPanel: TPanel;
cmdclear: TBitBtn;
CmdClose: TBitBtn;
CmdAbout: TBitBtn;
CmdHelp: TBitBtn;
cmdcalc: TBitBtn;
procedure cmdclearClick(Sender: TObject);
procedure cmdcalcClick(Sender: TObject);
procedure CmdAboutClick(Sender: TObject);
procedure CmdHelpClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.cmdclearClick(Sender: TObject);
begin
DataInput.Clear;
end;

procedure TForm1.cmdcalcClick(Sender: TObject);
function CelciusToFarenheit(Temperatura: real): real;
begin
result := (9/5) * Temperatura + 32;
end;


function FarenheitToCelcius(Temperatura: real): real;
begin
result := (5/9) * (Temperatura - 32);
end;
begin
If Fbutton.Checked = True Then
Begin

End;

End;

...


ni se si eso esta bien :rolleyes: me esta volviendo loco, a ver si mañana pregunto en la uni. ahora voy a estudiar pa examen de c++, eso es mas facil :p

Delphius
05-03-2007, 04:03:39
Bueno Delphius parece que por fin voy a ser yo quien te corrija un calculo :p

Este... la verdad es lo hice muy al vuelo. Ni lo probé:D Gracias por corregirme.
Tengo que admitir que mi mente estaba pensando en gradientes, sobel, filtrados. Mucho no me pude concentar.

nemesis, vas bien... lo que te faltaría es llamar a dichas funciones. Algo como, por ejemplo: convertir 132º F a ºC


if FButton.Checked
then Edit1.Text := FloatToStr(FarenheithToCelcius(132));


NOTA: A esto tampoco lo probé, pero de seguro anda.
Con esto consigues que se muestre en Edit1 los grados celcius correspondientes.

Si te estas iniciando en Delphi, dale una buena leida a La Cara Oculta de Delphi 4. (http://www.clubdelphi.com/foros/www.marteens.com/caraoculta.htm) Te va a servir mucho. Si bien dice Delphi 4... sirve para otras versiones ya que los principios no han cambiado.

Saludos,

nemesis
05-03-2007, 04:44:08
si soy nuevo en delphi no se mucho :p ok el resultado esta bien pero cada vez que quiera cambiar un numero tengo que ir al codigo y cambiarlo? por que yo tengo un edit donde tu pones los grados a cambiar y los muestra en un panel.



If Fbutton.Checked Then
Begin
DataPanel.Caption := FloatToStr(FarenheitToCelcius(20))
End;


http://img104.imageshack.us/img104/5148/delphinewvu4.jpg

eso es lo que llevo hasta ahora :( e estado todo el dia aqui y todavia no me sale lol. es facil poner los botones :p

el resultado da correcto pero ese 20 ahi q poner algo para q el usuario lo pueda cambiar en el edit, no ir al codigo y cambiar el numero alli.

nemesis
05-03-2007, 04:50:43
yey crao que lo hice necesito verificar bien


If Fbutton.Checked Then
Begin
DataPanel.Caption := FloatToStr(FarenheitToCelcius(StrToFloat(DataInput.Text)))
End;

nemesis
05-03-2007, 04:53:09
sip siempre da el resultado correcto :D Gracias!!!

algun dia yo sere tambien de los que ayude hehehe pero por ahora, no creo :p

Delphius
05-03-2007, 05:01:45
ok el resultado esta bien pero cada vez que quiera cambiar un numero tengo que ir al codigo y cambiarlo? por que yo tengo un edit donde tu pones los grados a cambiar y los muestra en un panel

el código que puse fue a manera de ejemplo.
Veamos, tienes un Edit y un panel, Uno para ingresar y otro para mostrar respectivamente. Para el caso puedes hacer esto:

PaneldeResultado.Caption := FloatToStr(FarenheitToCelcius(StrToFloat(EditDeEntrada.Text)));

Te recomiendo que para ir aprendiendo veas:
FloatTostr(), StrToFloat(), IntToStr(), StrToInt()... son funciones para pasar de real a string y de integer a string; junto a su inversa.

Para el tema de errores ve las instrucciones: try, except, finally, exception.

eso es lo que llevo hasta ahora :( e estado todo el dia aqui y todavia no me sale lol. es facil poner los botones :p
Calma... de a poco se aprende. A tu propio ritmo. Como te dije... dale a una buena leida a la cara oculta.
A medidas que empieces a conocerlo mejor, se te hará más sencillo y le podrás ver el potencial que tiene.

Saludos,