elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con Pascal
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con Pascal  (Leído 3,145 veces)
el conquistador13

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ayuda con Pascal
« en: 28 Octubre 2016, 13:46 pm »

Necesito hacer un programa que pidad el lado del cuadrado (obligatoriamente
debe ser impar y mayor que 0) y debe dibujar un cuadrado de la siguiente forma:
Si n=3                Si lado = 5                  Si lado = 7
AAA                    AAAAA                          AAAAAAA
ABA                    ABBBA                          ABBBBBA
AAA                    ABCBA                          ABCCCBA
                          ABBBA                          ABCDCBA
                          AAAAA                          ABCCCBA
                                                              ABBBBBA
                                                              AAAAAAA

Por ahora llevo esto
Código:
BEGIN
REPEAT
writeln('Introduzca el lado del cuadrado (impar y mayor que 0:)');
readln(lado);
UNTIL(lado > 0) AND (lado MOD 2 = 1);
letra := 'A';
FOR i := 0 TO (lado-1) DO BEGIN
FOR j := 0 TO (lado-1) DO BEGIN
IF (j = 0) OR (j = lado-k) OR (i = 0) OR (i = lado-k)THEN
write(letra)
ELSE
write(chr(ord(letra)+1));
END;
writeln();
END
writeln();
END;
Si alguien me pudiese ayudar. Si no es en Pascal da igual que sea en c o en C++


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con Pascal
« Respuesta #1 en: 28 Octubre 2016, 16:25 pm »

no manejo pascal, así que iré explicando en base a C

parte de tu codigo está bien, pero ignoras el hecho que la propagación llega solo hasta la mitad del cuadrado y vuelve

para lo que quieres hacer debes manejar un ciclo de "entrada" (la primera mitad) y un ciclo de "salida" (la segunda mitad) tanto horizontal como vertical

primero ... lees el numero y revisas que mod%2==1
la entrada será hasta la mitad mas 1

Código:
int entrada = leido/2 +1;
int salida = leido/2;

esto ya que cuando divides un impar entre 2 y lo dejas como entero, quedará uno menos del medio, así que para 5 entrada es 3 y salida 2

haces un ciclo desde 1 hasta (menor que) entrada y otro desde salida hasta (mayor que) 1....  esto nos dirá cuantas letras van en esta capa

dentro del ciclo de entrada haces otro ciclo... este recorre desde 0 hasta entrada

dentro de este ciclo un if con el que medirás si la posición es menor o igual que el valor del ciclo entrada, si lo es escribe la respectiva letra, si no, escribe la maxima (que es el valor del ciclo anteror)

ejemplo

Código:
para Y desde 0 hasta Y < entrada{
  para X desde 0 hasta X < entrada{
    si(X<=Y) imprimir 'A'+X
    sino imprimir 'A'+Y
  }
}

esto con leido = 7  dará

Código:
leido = 7
entrada = 3

X= 0 1 2 3 4 5 6 7
Y________________
0| A A A A
1| A B B B
2| A B C C
3| A B C D  
4|
5|
6|

ahora solo necesitas un poco de matemática para hacer los ciclos de "salida" que es casi lo mismo solo que superado la mitad y hacia atrás


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
el conquistador13

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con Pascal
« Respuesta #2 en: 28 Octubre 2016, 23:23 pm »

Me podrías poner el código completo aunque sea  en c. Es que no me aclaro
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con Pascal
« Respuesta #3 en: 28 Octubre 2016, 23:47 pm »

No se hacen tareas, dime donde está tu duda
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
el conquistador13

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Ayuda con Pascal
« Respuesta #4 en: 29 Octubre 2016, 10:17 am »

No entiendo a qué te refieres con un bucle de entrada y uno de salida. Y no se como hacer ese " poco de matemáticas"
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Ayuda con Pascal
« Respuesta #5 en: 1 Noviembre 2016, 04:52 am »

el bucle de entrada es el que escribe

ABCD


el de salida quien escribe CBA (el que va de retroceso)

la matematica es para calcular esa resta
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con pascal por fa
Programación General
Naly09 0 1,856 Último mensaje 21 Agosto 2010, 22:11 pm
por Naly09
Ayuda con Pascal
Programación General
seby_g12 1 2,405 Último mensaje 13 Septiembre 2010, 23:56 pm
por [L]ord [R]NA
Pascal , ayuda
Programación General
netca 2 2,360 Último mensaje 24 Marzo 2011, 23:07 pm
por Khronos14
Ayuda ejercicio de Pascal, cuando uno no lo ve claro pide ayuda
Programación General
manu3742 1 3,512 Último mensaje 31 Marzo 2011, 15:43 pm
por d(-_-)b
Ayuda pascal
Programación General
HomeGuard 0 1,603 Último mensaje 30 Septiembre 2013, 18:53 pm
por HomeGuard
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines