Pascal/Turbo Pascal - Formato en Pascal (es urgentillo)

   
Vista:
Imágen de perfil de Miguel

Formato en Pascal (es urgentillo)

Publicado por Miguel (3 intervenciones) el 01/02/2015 20:57:36
Buenas a todos! Soy nuevo en el foro y espero ser bien acogido :D

Hace poco empecé con Pascal(fpc) y ahora he hecho un programilla bastante sencillo para sacar el área de un triangulo. El programa en cuestión es este:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
program triangles;
{$H-}
 
{Creado por M40S http://m40s.info}
 
var
  bas: double;
  alt: double;
  res: double;
function reade(): double;
  var
    ex: double;
 
  begin
    readln(ex);
 
    if ex= 0 then
      begin
        writeln('El numero que ha ingresado no es válido, por favor ingrese otro:');
        reade();
 
      end
 
    else
      begin
        reade:= ex;
 
      end;
 
end;
 
begin
  writeln('Con este programa usted podrá calcular el area de cualquier triangulo.');
  writeln('Escriba a continuación la base del triangulo a calcular:');
  bas:= reade();
  writeln('Escriba a continuación la altura:');
  alt:= reade();
  res:= bas*alt/2;
 
  writeln('La base del triangulo es:', res);
 
end.

El problema que tengo es que abajo del todo, donde pone
1
writeln('La base del triangulo es:', res);
me devuelve el número en notación científica. Googleando encontré que la solución era poner
1
writeln('La base del triangulo es:', res:0:10);
y eso está bastante bien pero tiene dos fallos, el primero es que me muestra todos los ceros que hay hasta que el número tenga 10 decimales y el segundo es que si los decimales del número superan los 10 se redondea. Yo lo que quiero es que me muestre el número sin notación científica y con todos los decimales que tenga, ni más ni menos. ¿Es posible? ¿Cómo?

También tengo otra pequeña duda, cuando compilo el programa mediante la terminal (uso linux) con el comando 'fpc triangulos.pas' me lo compila pero sale algo que me desconcierta: es esto:
1
2
3
4
5
6
7
Free Pascal Compiler version 2.6.2-8 [2014/01/22] for i386
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for i386
Compiling triangulos.pas
Linking triangulos
/usr/bin/ld.bfd: aviso: link.res contiene secciones de salida. ¿Olvidó -T?
39 lines compiled, 0.0 sec
No entiendo lo de "/usr/bin/ld.bfd: aviso: link.res contiene secciones de salida. ¿Olvidó -T?". ¿A qué se debe?

Ojalá me sepan responder y muchas gracias de antemano. Bye.
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

Formato en Pascal (es urgentillo)

Publicado por ramon (2072 intervenciones) el 01/02/2015 21:57:02
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{Mira esto a ver si te sirve.
realizado en turbo pascal 7}
 
program triangles;
 {$N+}
 uses
    crt;
{Creado por M40S http://m40s.info}
 
var
  bas: double;
  alt: double;
  res: double;
  ent : word;
  fra : string;
  d : integer;
 
function reade: double;
  var
    ex: double;
 
  begin
    readln(ex);
 
    if ex= 0 then
      begin
        writeln('El numero que ha ingresado no es válido, por favor ingrese otro:');
        readln(ex);
 
      end
 
    else
      begin
        reade:= ex;
 
      end;
 
end;
 
begin
  clrscr;
  writeln('Con este programa usted podrá calcular el area de cualquier triangulo.');
  write('Escriba a continuación la base del triangulo a calcular :');
  bas := reade;
  write('Escriba a continuación la altura : ');
  alt:= reade;
  res:= (bas * alt) / 2;
  ent := trunc(res);
  str(frac(res):0:45,fra);
  for d := 1 to length(fra) do
  if fra[d] = '.' then
  delete(fra,1,d - 1);
  writeln('   ',ent,'     ',fra);
  writeln('La base del triangulo es :',ent,fra);
  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
1
Comentar
Imágen de perfil de Miguel

Formato en Pascal (es urgentillo)

Publicado por Miguel (3 intervenciones) el 01/02/2015 23:14:56
Lo he compilado con Free Pascal 2.6.2 así que no se como funcionará al compilarlo con Turbo Pascal, pero no me soluciona mucho. Es decir me ocurre lo mismo que al hacer
1
writeln('La base del triangulo es:', res:0:10);
se me muestra un número de decimales fijo, tanto si hay menos, con lo cual se muestra una cadena de ceros hasta llenar el hueco, como si hay más, que se redondea el número.

Para ser más exactos te muestro exactamente lo que me ocurre con tu código, valga la redundancia:
1
2
3
4
5
6
Con este programa usted podrá calcular el area de cualquier triangulo.
Escriba a continuación la base del triangulo a calcular :4.47364726234296546789
789747866536453785574523929
Escriba a continuación la altura : 12.3
 27 .51293066340923943
La base del triangulo es :27.51293066340923943

De todas formas gracias por el aporte y por tomarte tu tiempo intentando ayudarme :D
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
Imágen de perfil de Miguel

Formato en Pascal (es urgentillo)

Publicado por Miguel (3 intervenciones) el 02/02/2015 20:50:20
Al final encontré la solución por mi mismo. Si a alguien le interesa como lo solucioné lo pongo en una entrada de mi blog: http://www.m40s.info/2015/02/como-dar-formato-un-writeln-que.html
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