Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] ¿Cómo abordar un ejercicio de imprimir un patrón?

Estas en el tema de ¿Cómo abordar un ejercicio de imprimir un patrón? en el foro de C/C++ en Foros del Web. Hola estimados, tengo ejercicios de C en los que hay que imprimir patrones utilizando loops. ¿Cómo debo abordar esta clase de ejercicios? Yo venía abordando ...
  #1 (permalink)  
Antiguo 16/11/2014, 11:10
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 1
¿Cómo abordar un ejercicio de imprimir un patrón?

Hola estimados,
tengo ejercicios de C en los que hay que imprimir patrones utilizando loops. ¿Cómo debo abordar esta clase de ejercicios?
Yo venía abordando los ejercicios por instinto, pero llegué a un ejercicio en el que no me funciona el instinto. Por ejemplo para este ejercicio:
Código:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
programé el siguiente
Código C:
Ver original
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.     int counter;
  5.     char counter2;
  6.  
  7.     for(counter=0;counter<6;counter++){
  8.         for(counter2='A';counter2<='A'+counter;counter2++){
  9.             printf("%c", counter2+counter);
  10.         }
  11.     printf("\n");
  12.     }
  13.  
  14.     return 0;
  15. }
Lo cual me produce:
Código:
A
BC
CDE
DEFG
EFGHI
FGHIJK
Ya lo vengo intentando desde ayer, pero me parece que tengo que cambiar el instinto por algo más eficiente.
  #2 (permalink)  
Antiguo 16/11/2014, 11:18
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

El problema que tienes es que el contador que determina cual es el siguiente carácter a imprimir debería ser global. Con una tercera variable debería funcionar.

Código C++:
Ver original
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.     int counter, counter2;
  5.     char nextChar = 'A';
  6.  
  7.     for(counter=0;counter<6;counter++){
  8.         for(counter2=0;counter2<= counter; counter2++, nextChar++){
  9.             printf("%c", nextChar );
  10.         }
  11.     printf("\n");
  12.     }
  13.  
  14.     return 0;
  15. }
  #3 (permalink)  
Antiguo 16/11/2014, 12:13
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Otra opción más rebuscada sería encontrar la fórmula adecuada (que no es counter+counter2).

A (fila 0) es el 0-ésimo carácter escrito
B (fila 1) es el 1-ésimo carácter escrito
D (fila 2) es el 3-ésimo carácter escrito
G (fila 3) es el 6-ésimo carácter escrito

¡Sucesión triangular a la vista! (n*(n+1)/2)

Así que podría quedar así:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.     int counter;
  6.     char counter2;
  7.  
  8.     for(counter=0;counter<6;counter++){
  9.         for(counter2='A';counter2<='A'+counter;counter2++){
  10.             printf("%c", counter * (counter + 1) / 2 + counter2);
  11.         }
  12.     printf("\n");
  13.     }
  14.  
  15.     return 0;
  16. }
__________________
github.com/xgbuils | npm/xgbuils
  #4 (permalink)  
Antiguo 16/11/2014, 12:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Muchas gracias, ¿Cómo hacen para darse cuenta de cual es la solución o la forma de solucionar un problema como estos?
  #5 (permalink)  
Antiguo 16/11/2014, 13:56
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Cita:
Iniciado por Virtualforos Ver Mensaje
Muchas gracias, ¿Cómo hacen para darse cuenta de cual es la solución o la forma de solucionar un problema como estos?
Es algo que se consigue con experiencia... aunque no es infalible

Un saludo.
  #6 (permalink)  
Antiguo 17/11/2014, 20:36
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Hola; yo recién llego, y no lo resolví, pero creo que tengo una explicación de por qué a algunas personas les resulta más fácil que a otras resolver este tipo de problemas.

Como primera condición, creo que tiene que ver con una especie de habilidad más innata que adquirida, lo que muchos llaman "inteligencia" (incluido yo mismo). Después, claro, a medida que los niños lógicos encuentran que tienen cierto éxito al aplicar esta habilidad, les gusta y siguen. Con los años se van haciendo ingenieros, físicos, matemáticos, pedantes, tristes y aburridos (bueno, no necesariamente todo junto ni en ese orden, claro está).

En segundo lugar creo que ayuda mucho el estudio de la matemática, mientras más abstracta mejor; o sea, nada de lo que enseñan en la escuela bajo ese nombre, sino lo que hoy se encuentra algunas veces en alguna universidad. Análisis matemático, álgebra abstracta, y esas linduras (que dicho entre paréntesis, un lenguaje de programación no es más que un álgebra).

Después de estas dos cosas (digo, la innata y la matemática), se debe añadir algo de interés por las cosas mundanas; si no, conviene la filosofía o a la huerta.

Abreviando, yo creo que para que un zonzo como uno se haga más o menos hábil en resolver problemas, lo más recomendable es estudiar matemática.
  #7 (permalink)  
Antiguo 17/11/2014, 20:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Cita:
Iniciado por lareto Ver Mensaje
Después de estas dos cosas (digo, la innata y la matemática), se debe añadir algo de interés por las cosas mundanas; si no, conviene la filosofía o a la huerta.
jajaja jamás la huerta, bueno aunque alguna yerbita puede ser
  #8 (permalink)  
Antiguo 18/11/2014, 12:47
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: ¿Cómo abordar un ejercicio de imprimir un patrón?

Cita:
Iniciado por eferion Ver Mensaje
El problema que tienes es que el contador que determina cual es el siguiente carácter a imprimir debería ser global. Con una tercera variable debería funcionar.
Pantaláimon me pisó la solución matemática.

Mis propuesta son básicamente las mismas pero haciendo uso de otra variable entera y recurriendo a la equivalencia del ASCII:

Código C++:
Ver original
  1. #include<stdio.h>
  2.  
  3. int main ( void ) {
  4.     int  i , j , k = 0 ;
  5.     for ( i = 0 ; i < 6 ;  i++ ) {
  6.         for ( j = 0 ; j <= i ; j++ , k++ )
  7.             printf ( "%5c" , 65 + k ) ;
  8.         printf("\n");
  9.     }
  10.     return 0;
  11. }
  12. /**
  13.     A
  14.     B    C
  15.     D    E    F
  16.     G    H    I    J
  17.     K    L    M    N    O
  18.     P    Q    R    S    T    U
  19.  
  20. **/

Código C++:
Ver original
  1. #include<stdio.h>
  2.  
  3. int main ( void ) {
  4.     int  i , j  ;
  5.      for ( i = 0 ; i < 6 ;  i++ ) {
  6.         for ( j = 0 ; j <= i ; j++  )
  7.             printf ( "%5c" , 65 + i * ( i + 1 ) / 2 )  ;
  8.         printf("\n");
  9.     }
  10.     return 0;
  11. }

Lo siento pero cuando ya lo han bordado es difícil encontrar variaciones .

¡¡¡Saluditos!!!


Última edición por leosansan; 18/11/2014 a las 20:30

Etiquetas: char, clase, ejercicio, funcion, int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:42.