Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: BioHazardTM en 1 Enero 2012, 23:41 pm



Título: Ejercicio Pascal
Publicado por: BioHazardTM en 1 Enero 2012, 23:41 pm
Buenas noches, tengo un problema con un ejercicio de Pascal, el ejercicio consiste en escribir un programa que a partir de un número entero impar, forme figuras de este tipo:
Código:
Número = 5

5
  4
    3
  2
1

Tengo todo el ejercicio hecho, pero me falta una parte, si hay 5 filas y 5 columnas, ¿cuál sería el número de espacios en función de las filas, que debería poner?
Código
  1. PROGRAM P04_8;
  2. USES    CRT;
  3. VAR     N, i, j, k, cont: integer;
  4. BEGIN
  5.        Write('Introduce un numero positivo impar: ');
  6.        Read(N);
  7.  
  8.        FOR i := 1 TO N DO
  9.                cont := 0;
  10.                FOR j := 1 TO N DO
  11.                        BEGIN
  12.                                IF (j MOD 2 <> 0) AND (cont = 0) THEN
  13.                                        BEGIN
  14.                                                IF (i <> 1) THEN
  15.                                                        BEGIN
  16.                                                                k := ;   <------ k = Numero de espacios antes del numero, para la fila actual
  17.                                                                REPEAT
  18.                                                                        BEGIN
  19.                                                                                Write(' ');
  20.                                                                                k := k - 1;
  21.                                                                        END;
  22.                                                                UNTIL k = 0;
  23.                                                        END;
  24.                                                Write(N - i + 1);
  25.                                                cont := cont + 1;
  26.                                        END;
  27.                                IF (cont <> 0) THEN Write(' ');
  28.                        END;
  29.  
  30. READKEY;
  31. END.

No se si me he explicado bien.


Título: Re: Ejercicio Pascal
Publicado por: kaiserr en 3 Enero 2012, 20:31 pm
mmmm
y si utilizas por ejemplo:

Código:
write(a:5)

Con esto mueves el valor de a (en mi caso, en el tuyo el valor que quieras mover) 5 posiciones.
No domino mucho el lenguaje pero ahora mismo me pongo hacer el codigo a ver si me sale.
--------------------------------------------------------------------------

Rectifico:

Al haber 5 linias es posible que haya 5 columnas?, es decir, en el ejemplo que has puesto hay 5 linias pero solo utilizas 3 columnas

Código:
5
  4
    3
  2
1





Título: Re: Ejercicio Pascal
Publicado por: BioHazardTM en 4 Enero 2012, 11:26 am
Lo que pasa es que en el ejemplo que he puesto los espacios también los cuento como columnas (las dos columnas en blanco).


Título: Re: Ejercicio Pascal
Publicado por: W0lFy en 5 Enero 2012, 10:43 am
por que no cambias un poquito la funcion, te dejo una que se entiende mejor:
Código
  1. PROGRAM
  2. VAR
  3. a:integer;
  4.  
  5. PROCEDURE escrbirImpar(num:integer)
  6. VAR i,j,limite,cont:integer;
  7. BEGIN
  8. cont:=0;
  9. limite= num div 2 + num mod 2;
  10. FOR i := num DOWNTO 1 BEGIN
  11. cont = (i div limite) * (limite - (i Mod limite + 1)) + ((i Mod limite - 1) - (i div limite) * (i Mod limite - 1))
  12.    For j:= 1 To cont
  13.         print(' ');
  14.    println(i);
  15.    END;
  16. END;
  17.  
  18. BEGIN
  19. read(a);
  20. escrbirImpar(a);
  21.  
  22. END.




Pd. Habra algún error de compilación no recuerdo si los procedimientos ivan arriba o abajo de las variables... espero que te sirva :D