[ Foro de Pascal ]

vectores

01-Feb-2014 19:39
Invitado (Carlos Jurado)
3 Respuestas

Hola profesor Nacho y compañeros.
en esta ocasion queria preguntarles es que he desarrollado un programa en el que ahora tengo dos vectores y lo que deseo ahora es representar en una matriz los valores de uno de esos vectores como * y como base los valores del otro, esquematicamente seria algo asi:

v1 = 5  4  9  5  7  1
v2= 3   2  5  2  2   1

entonces mi idea es tener algo ahora como :


               *
               *
     *         *
     *   *     *    *    *
     *    *    *    *    *    *
     5    4   9   5   7   1

la matriz de *, quiero que sea independiente del vector base v1, yo he realizado el procedimiento  que me calcula el mayor de un vector en este caso
que sera o correspondera con el valor del numero de filas que tendra la matriz, lo que no se es como hago corresponder el valor de cada elemento del evctor v1 con los del vector v2 e ir represntando dicho valor en la matriz como asteriscos, si me pueden dar una ayuda es lo unico que me resta del ejercicio, se los agradezco .


02-Feb-2014 02:15
Luis Torres (+18)

Aquí tienes una solución que funciona para números positivos de un solo dígito:


program asteriscos;

uses Crt;

var
 V1, V2: array[1..10] of integer;
 Mayor, N, i, j: integer;

BEGIN
 ClrScr;
 write('Introduzca el numero de elementos de los vectores: '); readln(N);
 writeln('Elementos del primer vector (TODOS POSITIVOS DE UN DIGITO): ');
 for i:=1 to N do
  begin
    write('Elemento ',i,': '); readln(V1[i]);
  end;
 writeln('Elementos del segundo vector (TODOS POSITIVOS DE UN DIGITO): ');
 Mayor:= 0;
 for i:=1 to N do
  begin
    write('Elemento ',i,': '); readln(V2[i]);
    if V2[i] >= Mayor then
     Mayor:= V2[i];
  end;
 writeln('El elemento mayor del segundo vector es: ',Mayor);

 ClrScr;
 for i:=1 to N do
  begin
    for j:=(Mayor - V2[i] + 1) to Mayor do
     begin
       gotoxy(i,j); write('*');
     end;
  end;
 gotoxy(1,Mayor + 1);
 for i:=1 to N do
  write(V1[i]);

 readln;
END.

02-Feb-2014 13:01
Invitado (Carlos Jurado)

muchas gracias luis, sobre todo por que esta muy sencilla y entendible la solucion que le das a mi problema.Luis una cosa si el caso del vector fuese de mas de un digito en que cambiaria el planteamiento o que cambio deberia realizarse en tu solucion para que tambien funcione para un vector de enteros de mas de un digito ? una vez mas muy amable por tu ayuda.Eres profesor? como el profesor nacho, por que haces unas soluciones muy entendibles a mi por lo menos me han servido todas las intervenciones que desde que encontre hace poco este foro, te lo agradezco.


03-Feb-2014 18:45
Nacho Cabanes (+83)

Yo diría que el algoritmo que propone Luis debe comportarse bastante bien incluso aunque no sean números de un dígito, pero lo mejor que puedes hacer es... probarlo...

En ocasiones, los textos de "destabulan" si son más grandes de lo que el programa espera, así que una alternativa sería refinar un poco, con un "si el número es menor de 10, escribe un espacio y luego el número", pero ese tipo de refinamientos hacen que el programa sea (un poco) más complejo y que se vea peor la idea del algoritmo, así que es razonable no hacerlos en un primer acercamiento, sino quizá en una segunda aproximación, si fuera necesario.






(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.)