Sie sind auf Seite 1von 5

Definicin: El programa tiene que imprimir un diamante de n lneas Anlisis y Diseo: Primero analizamos el problema a resolver que es imprimir

un diamante de N lneas de esta forma por ejemplo si el numero es 9 la impresin en pantalla quedara de esta forma * *** ***** ******* ********* ******* ***** *** * Como se puede observar son 2 tringulos issceles uno en la parte superior y uno invertido en la parte inferior omitiendo la ltima lnea sea la lnea con n asteriscos Una vez ya analizado el problema procedemos a su diseo Para poder resolver el problema se me ocurri hacerlo con ciclos for De manera tal que imprimiera n veces un numero de n asteriscos Para esto se utilizaran 3 ciclos for 2 dentro de otro el primero para usarlo como contador para definir n , para imprimir saltos de lneas Y para poder imprimir las n lneas de asteriscos El segundo dentro del primero imprimir espacios que sern los que acomodaran los asteriscos en el orden que deben de llevar para formar un triangulo issceles. El tercero ser el que imprimir el numero n de asteriscos en esta parte usaremos un if para que solo imprima lneas de nmeros impares de

asteriscos ya que si imprimimos las lneas de asteriscos pares quedara un diamante del doble de lneas solicitadas. Una vez hecho esto se repite el mismo cdigo solamente que ahora la variable del ciclo for se inicializara en el numero n-1 esto para que no imprima la ltima lnea de asteriscos asi quedara el diamante del numero deseado de lneas, cabe resaltar adems que el contador de este ciclo ser sustractivo en vez de aditivo. Esto para que las lneas se impriman en orden descendente y quede un triangulo invertido que es lo que se necesita como se menciono anterior mente. Adems de esto se defini una cadena de caracteres la cual mediante un ciclo for se hace pasar por una comparacin esto para validar que el usuario no meta caracteres y el numero que introduzca no sea impar, despus de eso la cadena se convirti en tipo entero para su posterior uso. En esta parte terminamos con la explicacin del diseo a continuacin la codificacin. Codificacin:
#include<stdio.h> #include <stdlib.h> int main(){ // inicio del programa char num[2]="00"; // declaracion del string de caracteres int n=0,i=0,f=0,c=0; //declaracion de variables de tipo entero do{//ciclo para la validacion de la entrada del usuario printf("\n introduce un nmero impar menor a 89|"); /*impresin en pantalla que solicita al usuario su nmero*/ scanf("%s",&num); //lee la variable num for(i=0;i<1;i++){ if(num[i]<48||num[i]>57){ c=c+1;

} else{ c=0; } } if(c>0){ printf("la entrada solo puede contener numeros\n"); } if(c==0){ n=atoi(num); //conversin de la cadena en tipo entero para su uso if(n%2!=0){ c=15; } else{ printf("el numero no es impar\n"); c=1; } } }while(c<15); //cierra el ciclo para la validacin de la entrada del usuario c=0; for(i=0;i<=n;i++){ //inicia ciclo para la creacin del triangulo issceles superior printf("\n"); for( c=0;c<(n-i); c++) // ciclo para la impresin de los espacios que alinean los caracteres

{ printf(" "); } for(f=0;f<i;f++){ //ciclo para la impression de las lineas de n asteriscos if(i%2!=0){ printf("*"); printf(" "); } } } // fin del ciclo para la creacin del triangulo superior for(i=n-1;i!=0;i--){ /* el mismo ciclo que el de arriba pero para la creacin del triangulo inferior*/ printf("\n"); for( c=0;c<(n-i); c++) { printf(" "); } for(f=0;f<i;f++){ if(i%2!=0){ printf("*");

printf(" ");

} }// fin del ciclo para la cracion del triangulo inferior return 0; // retorna el valor 0 a main } // fin del programa

Das könnte Ihnen auch gefallen