Pascal/Turbo Pascal - VAL (Duda)

 
Vista:

VAL (Duda)

Publicado por wind (26 intervenciones) el 17/04/2014 00:03:10
Saludos cordiales.

Cuando busco implementar el val en el siguiente programa, no me resulta. ¿Porqué?
1.8; 459.67; 273.15; (¿Será porque están presentes aquellos números?)
¿Mi problema tiene alguna solución al respecto?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program Projectval;
var
C:string;
code:integer;
C1,F1,R1,K1:real;
begin
(*Presentación del programa*)
writeln('Convertidor de temperatura');
writeln('Programa creado por Benjamin C.');
(*Captura de datos*)
write('Escribe la temperatura en grados celcius:');
readln(C);
val(C,C1,code);(*Transforma el string a un número real*)
F1:=1.8*C1+32;
R1:=F1+459.67;
K1:=C1+273.15;
writeln('La temperatura en grados Fahrenheit es:',F1:2:2);
writeln('La temperatura en grados Rankine es:',R1:2:2);
writeln('La temperatura en grados Kelvin es:',K1:2:2);
readln;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

VAL (Duda)

Publicado por Diego (98 intervenciones) el 17/04/2014 00:29:27
No se bien cual es la necesidad de pasar la temperatura como un stringm, pero si es para comprobar el manejo del VAL entonces te comviene hacer una verificación luego de efectuado el val, así no te daría un error en ejecución en caso de no poder realizar la conversión;
Osea val (cadena, variable_destino, codigo) ; si ocurrió algu error y no se pudo convertir la cadena entonces codigo tendra un 0 como valor; así que luego de ejecutar el val deberias prguntar si el código es o no 0. Si es 0 se produjo un error sino se convirtió correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

VAL (Duda)

Publicado por ramon (2158 intervenciones) el 17/04/2014 01:04:53
Mira procesa este sistema.

1
2
3
4
5
6
val(C,C1,code);
if code <> 0 then
begin
     erase(c,code,1);
      val(C,C1,code);
   end;

Si un dato entrado no es numero te dará un valor <> 0 se borra el fallo y se vuelve a
realizar la operación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

VAL (Duda)

Publicado por ramon (2158 intervenciones) el 17/04/2014 11:51:42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{Mira en la anterior me equivoque en erase es delete pero mira esta otra forma de asegurar la entrada}
 
program Projectval;
var
C:string;
i,code:integer;
C1,F1,R1,K1:real;
begin
(*Presentación del programa*)
writeln('Convertidor de temperatura');
writeln('Programa creado por Benjamin C.');
(*Captura de datos*)
write('Escribe la temperatura en grados celcius:');
readln(C);
for i := 1 to length(c) do
if c[i] = ',' then
c[i] := '.';
if c[i] = ' ' then
delete(c,i,1);
writeln(c);
val(C,C1,code);(*Transforma el string a un número real*)
F1:=1.8*C1+32;
R1:=F1+459.67;
K1:=C1+273.15;
writeln('La temperatura en grados Fahrenheit es:',F1:2:2);
writeln('La temperatura en grados Rankine es:',R1:2:2);
writeln('La temperatura en grados Kelvin es:',K1:2:2);
readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar