Pascal/Turbo Pascal - Calculadora de números grandes

 
Vista:
sin imagen de perfil

Calculadora de números grandes

Publicado por Estudiante (6 intervenciones) el 29/12/2014 20:08:30
Me pide implementar un programa que realice una suma resta y multiplicacion con numeros de hasta 50 cifras. He conseguido leer numeros grandes con arrays y que haga la suma y resta, pero cuando se trata de numeros negativos, suma y resta mal... Alguien me puede ayudar? Tened en cuenta que los números se guardan en arrays y las operaciones a partir de ahí sería como hacerlas a mano!
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

Calculadora de números grandes

Publicado por Mrblas (2 intervenciones) el 02/01/2015 18:52:15
Hola buenas, por aqui no puedo ayudarte demasiado. Si me adjuntas el archivo o una imagen del mismo podré ayudarte conforme con el desarrollo. Yo soy ingeniero ya y de esto sé bastante.
Un saludo
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
sin imagen de perfil

Calculadora de números grandes

Publicado por Estudiante (6 intervenciones) el 02/01/2015 18:59:49
Me puedes dar tu correo para enviarte el código?
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

Calculadora de números grandes

Publicado por anonima (1 intervención) el 07/01/2015 18:52:17
Porfavor ayudame soy una ingeniera con problemas.

[email protected]
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 Mark

Calculadora de números grandes

Publicado por Mark (2 intervenciones) el 02/01/2015 21:49:25
Yo tengo el mismo problema si lo consigues postealo!! ;3
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
sin imagen de perfil

Calculadora de números grandes

Publicado por Estudiante (6 intervenciones) el 02/01/2015 21:51:50
A lo mejor eres de mi clase jajajaja
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 Mark

Calculadora de números grandes

Publicado por Mark (2 intervenciones) el 02/01/2015 22:05:24
a lo mejor jajajaj
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
sin imagen de perfil

Calculadora de números grandes

Publicado por Carlos (1 intervención) el 05/01/2015 00:31:04
Buenas, me imagino que sois de la URJC, ¿no? jaja yo tengo la práctica enterita de otros años, mandarme un privado y podemos hablar. Un saludo
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

Calculadora de números grandes

Publicado por ramon (2158 intervenciones) el 10/01/2015 14:08:01
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
{Mira esto te puede encaminar}
 
program calculos;
 uses
   crt;
 const
     max = 50;
   type
      numeros = array[0..max] of char;
      resultado = array[1..(max * 2) + 4] of char;
      stringmax = string[max];
   var
     sum : array[1..max] of numeros;
     resul : resultado;
     cont : integer;
     suum : numeros;
 
  procedure sumalineas(ds : stringmax);
  var
     z, r : integer;
     toma, num, resto : integer;
  begin
     z := max;
     for r := length(ds) downto 1 do
     begin
        suum[z] := ds[r];
        z := z - 1;
     end;
      for r := z downto 1 do
      suum[r] := '0';
      resto := 0;
      for z := max downto 1 do
      begin
         toma := ord(sum[cont - 1][z]) - 48 + ord(suum[z]) - 48;
         toma := toma + resto;
         resto := 0;
         num := toma mod 10;
         resto := toma div 10;
         sum[cont][z] := chr(num + 48);
      end;
  end;
 
 
  procedure restamos(ds : stringmax);
  var
     z, r : integer;
     toma, num, resto : integer;
  begin
     z := max;
     for r := length(ds) downto 1 do
     begin
        suum[z] := ds[r];
        z := z - 1;
     end;
      for r := z downto 1 do
      suum[r] := '0';
      resto := 0;
      for z := max downto 1 do
      begin
         toma := (ord(sum[cont - 1][z]) - 48) - (ord(suum[z]) - 48);
         toma := toma + resto;
         resto := 0;
         num := toma mod 10;
         resto := toma div 10;
         sum[cont][z] := chr(num + 48);
      end;
  end;
 
  procedure mas(c : stringmax);
  var
    p, t : integer;
  begin
     sumalineas(c);
     p := 1;
     for t := 1 to max do
      if sum[cont][t] > '0' then
       begin
          gotoxy(2 + p,3);write(sum[cont][t]);
          p := p + 1;
       end;
       cont := cont + 1;
  end;
 
  procedure entrada_suma;
  var
    tec : char;
    t, p, x, y, i : integer;
    su : stringmax;
  begin
     clrscr;
     gotoxy(10,2);write('Entre Suma');
     i := 1;
     x := max;
     y := 4;
     fillchar(su,max + 1,' ');
     su[0] := chr(max);
     gotoxy(x - 1,y);
    repeat
       tec := readkey;
       if tec in[#48..#57] then
       begin
          su[i] := tec;
          su[0] := chr(i);
          gotoxy(x - i,y);write(su);
          i := i + 1;
          if i > max then
          i := max;
       end;
       if tec = #43 then
       begin
          sum[cont][0] := '+';
          if cont = 1 then
          begin
          p := max;
          for t := length(su) downto 1 do
          begin
              sum[cont][p] := su[t];
              p := p - 1;
          end;
           for t := p  downto 1 do
           sum[cont][t] := '0';
           p := 1;
           for t := 1 to max do
           if sum[cont][t] > '0' then
           begin
           gotoxy(2 + p,3);write(sum[cont][t]);
           p := p + 1;
           end;
           cont := cont + 1;
           fillchar(su,max + 1,' ');
           su[0] := chr(max);
           i := 1;
           gotoxy(1,y);clreol;
         end
       else
           begin
              mas(su);
              fillchar(su,max + 1,' ');
              su[0] := chr(max);
              i := 1;
              gotoxy(1,y);clreol;
           end;
       end;
       if tec = #45 then
       begin
          if cont > 1 then
          begin
             mas(su);
          end
       else
          begin
            sum[cont][0] := '+';
          p := max;
          for t := length(su) downto 1 do
          begin
              sum[cont][p] := su[t];
              p := p - 1;
          end;
           for t := p  downto 1 do
           sum[cont][t] := '0';
           p := 1;
           for t := 1 to max do
           if sum[cont][t] > '0' then
           begin
           gotoxy(2 + p,3);write(sum[cont][t]);
           p := p + 1;
           end;
           cont := cont + 1;
          end;
          fillchar(su,max + 1,' ');
          su[0] := chr(max);
          gotoxy(1,y);clreol;
          sum[cont][0] := '-';
          i := 1;
        repeat
          tec := readkey;
         if tec in[#48..#57] then
         begin
          su[i] := tec;
          su[0] := chr(i);
          gotoxy(x - i,y);write(su);
          i := i + 1;
          if i > max then
          i := max;
       end;
        until (tec = #43) or (tec = #13);
        restamos(su);
         p := 1;
         for t := 1 to max do
          if sum[cont][t] > '0' then
         begin
           gotoxy(2 + p,3);write(sum[cont][t]);
           p := p + 1;
        end;
        cont := cont + 1;
        fillchar(su,max + 1,' ');
        su[0] := chr(max);
        i := 1;
        gotoxy(1,y);clreol;
       end;
    until tec = #13;
    if i > 1 then
    begin
       mas(su);
    end;
    clrscr;
    gotoxy(10,2);write('***** El Resultado Es *****');
    gotoxy(1,4);write('Total : ');
    p := 1;
    for i := 1 to max do
    if sum[cont - 1][i] > '0' then
    begin
    gotoxy(8 + p,4);write(sum[cont - 1][i]);
    p := p + 1;
    end;
    readkey;
  end;
 
 
 
 
 
   begin
       cont := 1;
       entrada_suma;
   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