[ Foro de Pascal ]

ubicar vectores como suma

27-Apr-2014 14:57
Invitado (FranciscoLuis99)
6 Respuestas

hola buenas, gracias por atenderme,parece un buen foro.
queria pedir vuestra ayuda.
necesito ubicar en pantalla la suma de dos numeros( estos numeros son vectores), de tal modo que:
ejemplo:
                   A=   1 2 3 4 5
                   B= 67
entonces en pantalla debe mostrarse:
                     1  2  3  4  5  +
                                  6 7
                   --------------------
                   1  2   4  1  2

debe cumplirse que el segundo vector sea menor o igual al primero.

gracias por vuestra colaboracion.saludos


27-Apr-2014 16:35
Luis Torres (+12)

Con el uso de un especificador de formato puedes lograr que las variables y las cadenas se ubiquen en la forma que muestra tu ejemplo. Esto se hace de la siguiente forma, con un writeln:
writeln(A:10); lo que hace esta instrucción es mostrar en pantalla el valor de la variable A ubicándolo en las 10 primeras posiciones de la línea hacia la derecha. Si requieres de más espacio puedes colocar un número más alto, en vez de 10 pon 15 ó 20 o el que tú quieras que sea menor a 80.
Yo elaboré un código, pero en vez de utilizar vectores, lo hice con variables integer. Aquí te lo dejo:

 
program sumaFormato;
uses crt;
var
  A,B: integer;
BEGIN
  write('Introduzca el valor de A: '); readln(A);
  write('Introduzca el valor de B: '); readln(B);
  writeln(A:10,' +');
  writeln(B:10);
  writeln('----------');
  writeln(A+B:10);
  readln;
END.
 

27-Apr-2014 22:12
Invitado (FranciscoLuis99)

gracias luis, entiendo tu logica, sin embargo por favor podrias ayudarme haciendolo a traves de vectores es que es la unica parte que me falta para completar el programa base. por tu tiempo y ayuda gracias luis.


27-Apr-2014 23:06
Invitado (FranciscoLuis99)

luis otra cosa es que disculpa que no entienda lo que me dices:
ubicándolo en las 10 primeras posiciones de la línea hacia la derecha?
a que primeras 10 posiciones te refieres y de cual linea,
estuve probando tu codigo para un ejemplo como:
1234567896 +
               23
-------------------

pero se descuadra todo por que puede ser luis?


28-Apr-2014 00:06
Luis Torres (+12)

Me refería a la línea, de la pantalla, en la que se va a escribir lo que está en el writeln (pero lo que está antes del ':10'). Ubícate en la pantalla, cuentas 10 espacios y, lo que está antes del ':10' se escribirá alineado hacia la derecha, como si se escribiera de derecha a izquierda comenzando desde la posición 10.
El número 123456789 es superior al permitido para una variable tipo integer, prueba cambiando el tipo de dato a longint, también puedes probar cambiando el valor ':10' a ':15' o al valor que consideres necesario de acuerdo al tamaño de dato que se va a mostrar en pantalla. Creo que así se solucionaría todo.
En cuanto a hacerlo con vectores, prefiero esperar a que el prof. Nacho Cabanes responda, es que tengo unas dudas al respecto. De todas maneras, aprender a ubicar los datos en pantalla de la manera en la que está el código es muy útil.
Saludos.


28-Apr-2014 09:30
Invitado (FranciscoLuis99)

Hola luis muchisimas gracias , excelente explicacion me quedo completamente claro por lomenos la parte que em explicaste de ubicar los datos en pantalla, y como bien dices esperar al profesor nacho a ver que nos dice repecto a realizarlo con vectores. muy amable y una ayud muy buena de tu parte.


28-Apr-2014 21:51
Nacho Cabanes (+30)

Para hacerlo con vectores... da más detalles. ¿Son vectores de enteros?  ¿El elemento 1 va a aparecer a la derecha o a la izquierda? ¿Los dos tienen el mismo tamaño pero uno tiene algunos datos a cero o son de tamaño distinto? Si son de tamaño distinto, ¿qué tamaño? (en Pascal no se puede cambiar el tamaño de un array en ejecución, así que debe estar prefijado de antes).

Falta ver un poco de tu propuesta, para intentar no dirigirte en camino incorrecto, pero con ciertas restricciones (por ejemplo, que el dato 1 esté a la derecha, para que sea más sencillo), se podría plantear como:

 
para i = 1 hasta tamaño(v1)
    si i < tamaño(v2) entonces suma[i] = v1[i] + v2
    en caso contrario suma[i] = v1[i]
 







(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)