Hola!

Registrándote como bakuno podrás publicar, compartir y comunicarte en privado con otros bakuos :D

Regístrame ya!

casita turbo c++

chomic

Becerro
Desde
28 Dic 2008
Mensajes
40
hola, quisiera ver si me pueden hechar una manita, la idea es hacer un programa que imprima en pantalla una casita con contorno de "*", usando gotoxy y en turbo c++.

apenas llevo dos paredes, pero cuando intento hacer la tercera pelas, ya no me salio :(

mi codigo es este:


#include(stdio.h)
#include(conio.h)

int i,j;

void main() {

for(j=10;j<=20;j++){
gotoxy(10,j);printf("*");}

for(i=10;i<=40;i++){
gotoxy(i,10);printf("*");}

for(j=j+30;j<=50;j++){
gotoxy(40,j);printf("*");}

getch();

}


y lo que me imprime es esto:

*************************************
*
*
*
*
*
*
*
*
*


que son los primeros dos ciclos, pero ya el tercero no me hizo nada y quisiera pedirles sugerencias para las otras dos paredes.


gracias.
 
Empieza por la loza, techo o como quieras llamarle y sigue por las paredes al mismo tiempo, es decir, contrario a como normalmente se hace, construye de arriba hacia abajo.
 
el problema lo tienes con la variable j, en el primer ciclo la terminas en un valor de 20 y en el segundo le dices que empiece en 20 + 30 osea 50 y que termine cuando sea menor a 50 osea que ya termino. como consejo usa una variable por cada linea que quieras hacer o inicializarlas en 0 antes de los ciclos.
espero poder haberte ayudado.
 
pa mi que tienes mal esto

for(j=j+30;j<=50;j++){
gotoxy(40,j);printf("*");}

en usas la misma variable j para el primer ciclo for


for(j=10;j<=20;j++){
gotoxy(10,j);printf("*");}

en este ciclo j tendra al final del ciclo el valor 20.

entonces al entrar al ultimo ciclo for usas como primera sentencia j=j+30 y dice que el valor final de ese ciclo for es 50 [j<=50] entonces como el ultimo valor de j es 20 y se le suma 30 entonces llegara al instante al tope del ciclo for en la primera iteracion y por tanto no imprimira el "*" porque termina el ciclo for.

te recomiendo que hagas el siguiente arreglo si no quieres agregar otra variable para que imprima los *s del ultimo ciclo for

#include(stdio.h)
#include(conio.h)

int i,j;

void main() {

for(j=10;j<=20;j++){
gotoxy(10,j);printf("*");}

for(i=10;i<=40;i++){
gotoxy(i,10);printf("*");}

j=0;

for(j=j+30;j<=50;j++){
gotoxy(40,j);printf("*");}

getch();

}

Ahora no se si esto resuelva el problema completo, al menos si lo del tercer ciclo for
Lo demas es cuestion de prueba error, otra cosa no entiendo ¿porque j=j+30?
 
Volver
Arriba