
21/11/2009, 20:23
|
| | Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 17 años, 9 meses Puntos: 1 | |
Respuesta: Ayuda urgentisima De nada. Pues a ver:
Código:
#include <stdio.h>
#include <windows.h> //solo sirve para poder utilizar la funcion system("pause");//
int main()
{
char caracter;
int i,j,an,al;
/* an=0;al=0; */ //esto se puede omitir. No necesitas inicializar las variables a 0 porque debajo ya les asignas un valor. Aunque no es que esté mal.//
printf("Introduce caracter: ");
scanf("%c", &caracter);
printf("Introduce altura: ");
scanf("%i", &al);
printf("Introduce ancho: ");
scanf("%i", &an);
if (an==1) // Caso especial para 1 caracter de anchura//
{
for(i=1; i<=al; i++) //Como solo tiene 1 de ancho, 1 solo bucle para controlar el numero de filas//
printf("%c\n", caracter); //Voy escribiendo el caracter y salto de linea. Consigo hacer una columna de un solo caracter//
}
else
{
for(i=1;i<=al;i++) //Controla el numero de filas//
{
printf("%c", caracter); //Siempre escribe el primer caracter. Como todas las filas empiezan por caracter, lo escribo siempre, independientemente de lo que vaya a hacer despues//
for(j=2;j<an;j++) //Empiezo en j=2 quitando una columna, que es el caracter que he escrito antes. Por eso empieza con una "iteración" menos, en j=2 y no en j=1. Y le digo que mientras j<ancho, porque también voy a escribir siempre (+ abajo está puesto) el último caracter, independientemente de lo que tenga antes//
{
if( (i==1) || (i==al) ) //Si estamos en la primera fila (i==1) o en la última (i==altura), entonces escribe el caracter tantas veces como ancho se haya indicado - 2, que son los caracteres inicial y final que ya he escrito antes y después//
printf("%c",caracter);
else //Si no estoy al principio ni al final, es que estoy en medio, y por tanto escribo solo espacios, ya que el primer caracter ya lo he escrito, y el último lo escribire después, pero fuera de este bucle!!//
printf(" ");
}
printf("%c", caracter); //Siempre escribe el ultimo caracter//
printf("\n"); //Salto de linea //
}
}
system("pause"); //Esto solo sirve para parar el programa y poder ver el resultado: #include <windows.h>//
return 0;
}
Te he puesto el código con comentarios al lado. Puede que aquí se mezcle un poco, pero si lo pegas en tu compilador, los comentarios (lo que hay entre // //) se te colearán de otro color seguramente (suelen ponerse azules).
Espero que te sirva como explicación.
Chao! |