Pascal/Turbo Pascal - vector

 
Vista:
sin imagen de perfil

vector

Publicado por marios (58 intervenciones) el 24/04/2014 17:13:11
Hola ramon , buen dia para ti, gracias por toda tu ayuda generosa, Dios te bendiga amigo.
Ramon queria me ayudaras en dos cuestiones
1- como puedo pasar un numero almacenando cada uno de sus digitos en un vector
2- como puedo sumar dos numeros almecenados cada uno en un vector, tal cual sumamos en la practica?

gracias ramon.
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

vector

Publicado por Diego (98 intervenciones) el 24/04/2014 18:39:41
Primero que nada tenés que saber de que tipo de número se trata ya que solo altera un poco la manera en la que se deberá trabajar:
Luego números enteros bastaría con consiguir la los digitos que lo componen haciendo una división y guardando los restos a medida que se obtienen, pero con la salvedad que el primer elemento del vector sería para el signo, los siguientes para el número.

En cuanto a la declaración del vector sería de 21 elementos(22 para reales), ya que el número más grande con el que se trabaja en pascal tiene a lo sumo 20 sigitos luego se tendría que trabajar con dimensión logica ya que no todos los números serían del mismo largo. luego empezar a sumar de la unidad menor hasta la mayor siempre teniendo enconsideración el signo con el que están los números. El resultado se guardará en un vector auxiliar.

No me parece muy complicado pero puede que lleve un tiempito, en este momento estoy con prisa, si luego tengo tiempo lo escribo y lo subo.
PD: aunque puede que Ramon me gane en postear un código, jaja.
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

vector

Publicado por marios (58 intervenciones) el 25/04/2014 13:07:24
esperemos a ver a nuestro compañero Ramon.
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

vector

Publicado por ramon (2158 intervenciones) el 25/04/2014 23:07:50
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
{Mira esto}
 
 program numearray;
  uses
     crt;
   const
      max = 9;
   type
      arrsum = array[1..max] of integer;
   var
     p, resul, unidad, decena : longint;
     sum, sumd : arrsum;
     s1, s2 : integer;
     cont : integer;
     num : longint;
 
 
   procedure pasanumeaarray(var n : arrsum; nume : longint; var cot : integer);
   begin
       unidad := 0;
       decena := 0;
       cont := max;
       unidad := nume mod 10;
       p := 10;
       resul := unidad;
      while resul <> 0 do
      begin
       decena := resul;
       n[cont] := resul;
       cont := cont - 1;
       resul := (nume div p) mod 10;
       p := p * 10;
      end;
      cot := cont;
   end;
 
   procedure sumaarray;
   var
      su, p, k1, k2, resto, sumado : integer;
      resul : array[1..max + 1] of integer;
   begin
     write('  Entre Numero suma 1 : ');
     readln(num);
     pasanumeaarray(sum, num,s1);
     write('  Entre Numero Suma 2 : ');
     readln(num);
     writeln;
     pasanumeaarray(sumd, num,s2);
     clrscr;
     write('    ');
     for p := s1 + 1  to  max do
     write(' ',sum[p]);
     writeln;
     write('    ');
     for p := s2 + 1  to  max do
     write(' ',sumd[p]);
     writeln;
     write('    ');
     for p := s2 + 1  to  (max * 2) + 1 do
     write('-');
     writeln;
     resto := 0;
     k1 := max;
     k2 := max;
     p := max;
     fillchar(resul,sizeof(resul),0);
   repeat
     sumado := (sum[k1] + sumd[k2]) + resto;
     su := sumado mod 10;
     resto := (sumado div 10) mod 10;
     resul[p] := su;
     p := p - 1;
     k1 := k1 - 1;
     k2 := k2 - 1;
    until p < s1;
     write('   ');
     for k1 := s1 + 1 to max do
     write(' ',resul[k1]);
   end;
 
 
  begin
     clrscr;
     sumaarray;
     readkey;
  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
sin imagen de perfil

vector

Publicado por Diego (98 intervenciones) el 26/04/2014 02:55:49
Jaja, me lo suponía. aunque hay un par de errores en el código, no lo revisé todavía, pero lo probé u hay errores en la suma de negativos y positivos.
Probalo con estas cargas:
num1: 16; 16; -11
num2: 10; 123; 3


Hay un par de problemas, y nosé si tenga que ver co el acomodamiento de las uinidades, o si no se toman en cuenta las centenas unidades de mil etc.

Yo pensaba más bien en crear una variable en el cual se guardara el signo de cada uno y el del resultado, luego comparar desde la unidad más grande a la unidad más pequeña hasta que descrubra segun el caso que sea si el resultado será positivo o negativo. Luego de eso empezar a sumar como siempre desde la unidad más pequeña hasta la mas grande, si el resultado superase 9 agregaria una unidad a la unidad siguiente y así hasta cumplir con el largo del vector.

Aunque me gustó el ejercicio. aun así dice "número"; eperemos que solo sea un entero; aunque puede ser un qword.
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

vector

Publicado por ramon (2158 intervenciones) el 26/04/2014 11:19:39
Seme pide implementar esto :
1- como puedo pasar un numero almacenando cada uno de sus digitos en un vector
2- como puedo sumar dos números almacenados cada uno en un vector, tal cual sumamos en la practica?

no números negativos o decimales eso os lo dejo vosotros yo contesto a la pregunta siento no estar en esa
para saber en realidad que os piden suerte.
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

vector

Publicado por marios (58 intervenciones) el 27/04/2014 14:30:00
gracias ramon tu respuesta es impecable a lo que se pedia en el programa.
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

vector

Publicado por David (224 intervenciones) el 25/04/2014 16:31:22
Aquí la primera parte, almacenamiento en el vector.

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
Uses CRT;
 
var
  n : Integer;
  cif,i,j:integer;
  tab,auxtab:array  [1..10] of integer;
 
begin
  Clrscr;
  writeln('N: ');
  readln(N);
  cif:=1;
  if (N>=0) AND (n<10) then
    CIF:=1
  ELSE
    begin
      While n>=10 do
         begin
           I:=n mod 10;
           tab[cif]:=i;
           n:=n div 10;
           cif:=cif+1;
         end;
         n:=n mod 10;
         tab[cif]:=n;
 
    end;
 
  {Hay que tener en cuenta que tal cual se almacena en el vector, el número estaría "del revés", con lo que habría que "darle la vuelta", para lo cual vamos a utilizar un array auxiliar}
 
 for i:= cif downto 1 do
      auxtab[cif-i+1]:=tab[i];
    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