Pascal/Turbo Pascal - Error al convertir numero a palabra

 
Vista:
sin imagen de perfil

Error al convertir numero a palabra

Publicado por Javier (1 intervención) el 21/07/2017 20:37:31
hola, estoy trabajando en un programa para pasar de un numero (9999 max) a palabras, pero al ingresar un 0 me sale ese mismo dijito pero con el correspondiente al noveno lugar. Si alguien ve el error seria de ayuda


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
program Calculo;
type
  digitos = 0..9;
  vec = array [1..9] of string;
procedure descomponer(x: integer ; var dec,cent,mil,ein: digitos);
var
  dig: digitos;
  contador: integer;
begin
  contador:= 0;
  while (x <> 0) do begin
    dig:= (x mod 10);
    contador:= contador + 1;
    if (contador = 1) and (dig <> 0) then
      dec:= dig
    else
      if (contador = 2) and (dig <> 0) then
        ein:= dig
      else
        if (contador = 3) and (dig <> 0) then
          cent:= dig
        else
          mil:= dig;
    x:= (x div 10);
    end;
end;
procedure llenarmil (var vec1: vec);
begin
  vec1[1]:= 'mil';
  vec1[2]:= 'dosmil';
  vec1[3]:= 'tresmil';
  vec1[4]:= 'cuatromil';
  vec1[5]:= 'cincomil';
  vec1[6]:= 'seismil';
  vec1[7]:= 'sietemil';
  vec1[8]:= 'ochomil';
  vec1[9]:= 'nuevemil';
end;
procedure llenarcent (var vec2: vec);
begin
  vec2[1]:= 'ciento';
  vec2[2]:= 'dosciento';
  vec2[3]:= 'tresciento';
  vec2[4]:= 'cuatrociento';
  vec2[5]:= 'quiniento';
  vec2[6]:= 'seisciento';
  vec2[7]:= 'sieteciento';
  vec2[8]:= 'ochociento';
  vec2[9]:= 'noveciento';
end;
procedure llenardec (var vec3: vec);
begin
  vec3[1]:= 'uno';
  vec3[2]:= 'dos';
  vec3[3]:= 'tres';
  vec3[4]:= 'cuatro';
  vec3[5]:= 'cinco';
  vec3[6]:= 'seis';
  vec3[7]:= 'siete';
  vec3[8]:= 'ocho';
  vec3[9]:= 'nueve';
end;
procedure llenarotro (var otro: vec);
begin
  otro[1]:= 'once';
  otro[2]:= 'doce';
  otro[3]:= 'trece';
  otro[4]:= 'catorce';
  otro[5]:= 'quince';
  otro[6]:= 'disciseis';
  otro[7]:= 'discisiete';
  otro[8]:= 'disciocho';
  otro[9]:= 'discinueve';
end;
procedure llenareinti (var einti: vec);
begin
 
  einti[2]:= 'vienti';
  einti[3]:= 'treinta';
  einti[4]:= 'cuarenta';
  einti[5]:= 'cincuenta';
  einti[6]:= 'sensenta';
  einti[7]:= 'setenta';
  einti[8]:= 'ochenta';
  einti[9]:= 'noventa';
end;
var
  dec,cent,mil,ein: digitos;
  vec1,vec2,vec3,otro,einti: vec;
  num: integer;
begin
  llenarmil(vec1);
  llenarcent(vec2);
  llenardec(vec3);
  llenarotro(otro);
  llenareinti(einti);
  write('Ingrese un numero: '); readln(num);
  descomponer(num,dec,cent,mil,ein);
 
    write('El numero es: ', vec1[mil], ' ', vec2[cent], ' ', einti[ein] , ' y ', vec3[dec]);
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

Error al convertir numero a palabra

Publicado por ramon (2158 intervenciones) el 31/07/2017 18:51:32
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
{Prueba esto}
 
program Calculo;
type
  digitos = 0..9;
  vec = array [1..9] of string;
 
procedure descomponer(x: integer ; var dec,cent,mil,ein: digitos);
var
  dig: digitos;
  contador: integer;
begin
 
  contador:= 0;
  while (x <> 0) do
  begin
    dig := (x mod 10);
    contador:= contador + 1;
    if (contador = 1) and (dig <> 0) then
      dec:= dig
    else
      if (contador = 2) and (dig <> 0) then
        ein:= dig
      else
        if (contador = 3) and (dig <> 0) then
          cent:= dig
        else
          mil:= dig;
      x := (x div 10);
    end;
end;
procedure llenarmil (var vec1: vec);
begin
  fillchar(vec1,sizeof(vec1),0);
  vec1[1]:= 'mil';
  vec1[2]:= 'dosmil';
  vec1[3]:= 'tresmil';
  vec1[4]:= 'cuatromil';
  vec1[5]:= 'cincomil';
  vec1[6]:= 'seismil';
  vec1[7]:= 'sietemil';
  vec1[8]:= 'ochomil';
  vec1[9]:= 'nuevemil';
end;
procedure llenarcent (var vec2: vec);
begin
  fillchar(vec2,sizeof(vec2),0);
  vec2[1]:= 'ciento';
  vec2[2]:= 'dosciento';
  vec2[3]:= 'tresciento';
  vec2[4]:= 'cuatrociento';
  vec2[5]:= 'quiniento';
  vec2[6]:= 'seisciento';
  vec2[7]:= 'sieteciento';
  vec2[8]:= 'ochociento';
  vec2[9]:= 'noveciento';
end;
procedure llenardec (var vec3: vec);
begin
  fillchar(vec3,sizeof(vec3),0);
  vec3[1]:= 'uno';
  vec3[2]:= 'dos';
  vec3[3]:= 'tres';
  vec3[4]:= 'cuatro';
  vec3[5]:= 'cinco';
  vec3[6]:= 'seis';
  vec3[7]:= 'siete';
  vec3[8]:= 'ocho';
  vec3[9]:= 'nueve';
end;
procedure llenarotro (var otro: vec);
begin
  fillchar(otro,sizeof(otro),0);
  otro[1]:= 'once';
  otro[2]:= 'doce';
  otro[3]:= 'trece';
  otro[4]:= 'catorce';
  otro[5]:= 'quince';
  otro[6]:= 'disciseis';
  otro[7]:= 'discisiete';
  otro[8]:= 'disciocho';
  otro[9]:= 'discinueve';
end;
procedure llenareinti (var einti: vec);
begin
  fillchar(einti,sizeof(einti),0);
  einti[2]:= 'vienti';
  einti[3]:= 'treinta';
  einti[4]:= 'cuarenta';
  einti[5]:= 'cincuenta';
  einti[6]:= 'sensenta';
  einti[7]:= 'setenta';
  einti[8]:= 'ochenta';
  einti[9]:= 'noventa';
end;
var
  dec,cent,mil,ein: digitos;
  vec1,vec2,vec3,otro,einti: vec;
  num: integer;
 
begin
 
  write('Ingrese un numero: ');
  readln(num);
  descomponer(num,dec,cent,mil,ein);
  if num > 0 then
  begin
  llenarmil(vec1);
  llenarcent(vec2);
  llenardec(vec3);
  llenarotro(otro);
  llenareinti(einti);
  write('El numero es: ', vec1[mil], ' ', vec2[cent], ' ', einti[ein] , ' y ', vec3[dec]);
  end
  else
     write('El Numero es [0]');
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