Pascal/Turbo Pascal - Imprimir un REAL en modo grafico

   
Vista:

Imprimir un REAL en modo grafico

Publicado por Franco Sanguedolce (32 intervenciones) el 05/11/2013 05:06:42
amigos del foro, necesito saber como puedo imprimr por pantalla un numero real en modo grafico;

he logrado imprimir el real pasandolo a string con la funcion FloatToStr y FloatToStrF de la libreria sysutils y tambien probe con la funcion Str, pero lo que necesito hacer es imprimir el real con solo dos digitos, es decir, lo que logre imprimir es el real en notacion cientifica, pero quiero hacerlo como lo haria en modo texto usando writeln(real:0:2)...

si pudieran ayudarme se los voy a agradecer...
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

Imprimir un REAL en modo grafico

Publicado por ramon (2072 intervenciones) el 05/11/2013 12:40:08
Mira como bien as realizado hay que convertirlo a string eso seria:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program numero;
 uses
    crt, graph;
  var
    drive, modo : integer;
    st : string[12];
    n : real;
  begin
      drive := detect;
      initgraph(drive, modo,'c:\tp\bgi');
      if graphresult <> 0 then
      halt(1)
   else
      begin
         outtextxy(1,1,'Entre Un Numero Real : ');
         readln(n);
         str(n:8:2,st);
         outtextxy(10,80,'Su Numero Es : ' + st);
         readkey;
      closegraph;
      end;
  end.
{Modifica la direccion de la bgi a tu caso}
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

Imprimir un REAL en modo grafico

Publicado por Franco Sanguedolce (32 intervenciones) el 06/11/2013 00:47:46
Ramon, paso a comentarte, trabajo con Free Pascal 2.6.2 bajo windows...
Probe tu ejemplo y encontre dos errores...

Primero, la unidad crt dbe ser cambiada a wincrt en modo grafico,
El segundo es que no haybrutinas para leer el teclado en modo grafico, por lonque "readln" tampoco me funciona,

Yo he creado una funcion que lee el teclado en modo grafico algo asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function teclado(x:integer; y:integer; c:integer):string;
Var
   Tec:char;
   St:string;
Begin
    While tec<>#13 do  {mientras la tecla no sea [enter]}
      Begin
        Tec:= readkey;  {si se presiona una tecla la leo}
        If tec=#13 then break; {si es enter no sigo}
        St:=st+tec;  {guardo la tecla en la variable st}
        Setcolor(c);  {defino el color de texto}
        Outtextxy(x,y,tec);  {imprimo el caracter leido en [x,y]}
        X:=x+8;  {y aumento 8 pixeles en x para el proximo caracter}
      End;  {fin del while}
    Teclado:=st;  {y le paso el valor a la funcion}
End;


Teniendo en cuenta esto ramon, leo los numeros ingresados como string y los paso a real,
El problema me surge cuando debo operar con esos numeros y volverr a imprimirlos,
Al operar con ellos el resultado solo logro imprimirlo en notacion cientifica
Y usando "str" o "floattostrf" cuando paso el parametro "rl:5:2" solo logro que el string muestre "0.00"
Y si lo paso sin definir los decimales, logro qe imprima el real pero como.notacion cientifica,
Ademas, no solo estoy trabajando con ingresar numerosnpor teclado sino tambien sacando regiatros de un archivo *.dat.
El campo que almacena el real cuando busco imprimirlo tengo el mismo error
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

Imprimir un REAL en modo grafico

Publicado por ramon (2072 intervenciones) el 07/11/2013 22:21:12
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
{Mira para free pascal 2,6,0 y pascal 7 variando la unidas wincrt y crt}
 
program numeroreal;
 uses
    wincrt, graph;
  var
    drive, modo : integer;
    st : string;
    n : real;
    resul : string[18];
 
  procedure borracursor(x, y, col : integer);
  begin
     setcolor(col);
     line(x,y + 6,x + 8,y + 6);
     setcolor(15);
  end;
 
  procedure borraletra(x1, y1 : integer);
  var
    s, t : integer;
  begin
     for s := 0 to 8 do
       for t := 0 to 8 do
       putpixel(x1 + s,y1 + t,0);
  end;
 
  function teclado(x, y : integer;color : integer) : string;
  var
     dt : string;
     n : integer;
     tecla : char;
     valor : word;
   begin
      fillchar(dt,256,' ');
      dt[0] := chr(255);
      valor := 0;
      n := 1;
      borracursor(x + (n * 8),y,15);
      while valor <> 13 do
      begin
         tecla := readkey;
         if tecla = #0 then
         valor := word(ord(readkey)) shl 8
       else
         valor := ord(tecla);
         borracursor(x + (n * 8),y,0);
         if valor in[48..57,46] then
         begin
             dt[n] := tecla;
             dt[0] := chr(n);
             outtextxy(x + (n * 8),y,dt[n]);
             n := n + 1;
         end;
          if valor = 8 then
          begin
             n := n - 1;
             if n < 1 then
             n := 1;
             dt[n] := ' ';
             dt[0] := chr(n);
             borraletra(x + (n * 8),y);
          end;
          borracursor(x + (n * 8),y,15);
      end;
       teclado := copy(dt,1,length(dt));
   end;
 
   function stringreal(s : string) : real;
   var
     cont : integer;
     error : integer;
     r : real;
   begin
      for cont := 1 to length(s) do
      begin
        if s[cont] = ' ' then
        delete(s,1,1);
      end;
      val(s,r,error);
      if error <> 0 then
      stringreal := 0.0
    else
      stringreal := r;
   end;
 
 
  begin
      drive := detect;
      initgraph(drive, modo,'c:\tp\bgi');
      if graphresult <> 0 then
      halt(1)
   else
      begin
         outtextxy(1,1,'  Entre Un Numero Real : ');
         st := teclado(192,1,15);
         str((stringreal(st) * 10):12:2,resul);
         outtextxy(1,30,'  Resultado multiplicado por 10 = ' + resul);
         outtextxy(1,50,'  Pulse Una Tecla');
         readkey;
         closegraph;
      end;
  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

Imprimir un REAL en modo grafico

Publicado por Franco Sanguedolce (32 intervenciones) el 08/11/2013 09:08:56
muchas gracias ramon! he modificado un poco la funcion teclado para que lea ademas las letras y algunos simbolos y me funciona perfecto! sobre todo aclaraste mi duda de imprimir el real, desde ya muchas gracias
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