Programación General > Pascal
Duda En Pascal
(1/1)
jlcboado:
Ola, tengo una duda, como puedo hacer para Sumar 2 numeros que estan en un array, en cada casilla del array un numero. Ademas esa suma se realizará con numeros de bases comprensidas entre 2 y 10 (ambos numeros con la misma base)
Yo lo que he hecho a sido esto,
--- Código: Text --- Procedure Suma(Num1, Num2: T_Numero); Var i,j,z :integer; sum, acarreo :integer; Sol: T_Sol; max : integer; Begin sum := 0; acarreo := 0; z := 0; If Num1.Longitud >= Num2.Longitud then max := Num1.Longitud Else max := Num2.Longitud; for i := max + 1 downto 1 do begin //for if (i=max+1) AND (acarreo = 1) then begin Num1.Numero[i] := 0; Num2.Numero[i] := 0; end; sum := Num1.Numero[i]+Num2.Numero[i]+acarreo; writeln('i ',i, ' sum: ',sum,' acarreo' ,acarreo); acarreo := 0; z := z+1; if sum >= Num1.Base then begin //if Sol[z] := (sum - Num1.Base); sum := 0; acarreo := 1; end //if else Sol[z] := sum; writeln(' VECTOR ES : ',Sol[i]); //Pongo esto para que me muestre // los datos temporales del array end; //for for i:=1 to max+1 do write(Sol[i],' '); End;
Ademas tengo que hacer la multiplicacion de 1 numero cuya base esta comprendida entre 2 y 10 POR un numero de 1 cifra.
No pido a la solucion de este ejercicio, sino como hacerlo.
Si alguien me puede ayudar, se lo agradezco.
Que sea rápido
Gracias
Enko:
--- Citar ---como puedo hacer para Sumar 2 numeros que estan en un array, en cada casilla del array un numero.
--- Fin de la cita ---
No logro entender bien esa parte que es vital. :(
Te ayudo con gusto pero explicame por favor un poco más esa parte. (puede ser que hoy estoy un poco lento :P)
jlcboado:
La practica consiste en Sumar 2 numeros de igual base, y esta (la base) varia entre 2 y 10.
Ejemplo, base 2: 1110101010101
base 8: 237651237765
base 3: 1022211101
Para eso lo que hago es en un procedimiento anterior leer los datos en un String.
Mira, esta es la declaracion de tipos:
--- Código: Text --- Const Nmax = 200; Base_ini = 2; Base_fin = 10; Type T_Numero = Record Numero: array[1..Nmax] of byte; Base: integer; Longitud: 1..Nmax; End; T_Sol = array[1..Nmax] of byte;
Despues voy pasando cada caracter del string a un array (ahora que pienso este paso lo escusaba, lo podia ir metiendo directamente en el array xD)
Y ahora tengo que hacer la suma, tal y cmo ves en el codigo, pero no va!!!
No se si lo estoy haciendo bien o mal. Si sabes otra solucion más eficiente.
Y la 2ª parte es multiplicar un numero de base tambioen comprendida entre 2 y 10 por un numero de una cifra
Ejemplo:
1101010101010101 (en base 2 por 5
Este no tengo ni la remota idea de como se hace.
Enko:
Por que no haces más facil la conversion de base....
...digo, un numero de base N lo pasas a base 10, los sumas y luego lo conviertes a la base N.
Así tendrías que hacer 1 procedimiento para que te devuelva el numero cambiado de base. Como las base no supera 10, me imagino que se puede hacer eso con un soloprocedimiento generico para cualquier base N entre 2 y 10.
respecto de eficiencia, soy bastante malo en eso de problemas matemáticos, no te puedo aconsejar mucho.
jlcboado:
No puedo, porque deben ser con números largos (de
hasta 200 cifras) y con un integer o un longint no permiten 200 cifras.
la unica manera de hacerlo es con string o con arrays
Gracias
Navegación
Ir a la versión completa