Título: no puedo imprimir un array bidimensional completo [RESUELTO]
Publicado por: JavierScars en 2 Enero 2016, 21:15 pm
(http://)Ayuda trató de hacer un programa que me permita "dibujar " con "x" sobre ceros en una terminal, pero se supone que el plano debe ser de 50x50 el programa funciona perfectamente con un tamaño de 10 y hasta de 15 pero números más altos para el plano no me los acepta.
Estoy usando 2 #define para el tamaño y dos for para imprimirlo.
Sistema operativo lubuntu y terminal LXTerminal no se si eso tenga algo que ver.
Disculpen si ni colocó el código es que estoy desde el teléfono.
ACTUALIZACIÓN: Probé el código en windows y funciona perfectamente... :-\ no comprendo que pasa pero al menos ya se que no es mi código ;-)
ACTUALIZACIÓN... de nuevo: El problema se soluciono solo :P... reinicie la pc y listo :xD ;-)
Título: Re: no puedo imprimir un array bidimensional completo
Publicado por: MAFUS en 2 Enero 2016, 21:35 pm
Cuando puedas sube el código. :)
Título: Re: no puedo imprimir un array bidimensional completo
Publicado por: JavierScars en 2 Enero 2016, 21:51 pm
No estoy seguro de que el problema este en el codigo #include <stdio.h> #define alto 50 #define ancho 50 void escribir(int, int, int); void imprimir();
int estLapiz = 0; //El estado del lapiz 0 para levantado 1 para escribir; int dirlapiz = 0; // Direccion del lapiz para evitar confuciones como las manecillas del reloj //0 para arriba, 3 para la derecha, 6 para abajo, 9 para la izquierda.
int posLapiz [2] = {0}; /* la posicion del lapiz posLapiz[0] para la coordenada X y posLapiz[1] para la coordenada y */ int plano[alto][ancho] = {0}; int main(void) { int op = 0; int pasos; while (op != 9) { printf("introduzca una opcion"); printf("\n1) Levantar lapiz\n2) Escribir \n3) Girar a la derecha \n4) Girar a la izquierda \n5) Escribir \n6) Imprimir \n9) SALIR\n"); scanf("%d", &op); system("clear");
switch (op) { case 1 : estLapiz = 0; break;
case 2 : estLapiz = 1; break;
case 3 : if (dirlapiz == 9) dirlapiz = 0; else dirlapiz += 3; break;
case 4 : if (dirlapiz == 0) dirlapiz = 9; else dirlapiz -= 3; break;
case 5 : printf("introduzca la cantidad de pasos que desea dar: "); scanf("%d", &pasos); escribir(estLapiz, dirlapiz, pasos); break;
case 6 : imprimir(); break;
case 7 : printf("estado %d, direccion %d, pos x %d, pos y %d \n", estLapiz, dirlapiz, posLapiz[0], posLapiz[1] );
case 9 : printf("Gracias por usar el programa! \n"); break;
default : printf("Introdujo una opcion erronea por favor seleccione una correcta\n"); break; } } return 0; }
void escribir (int estLapiz, int dirlapiz, int pasos) { int i;
if (dirlapiz < 0) dirlapiz *= (-1);
switch(dirlapiz) { case 0 : while(pasos > 0) { if (posLapiz[1] > 0) { plano[posLapiz[0]][posLapiz[1]] = estLapiz; posLapiz[1]-=1; plano[posLapiz[0]][posLapiz[1]] = estLapiz; } pasos -= 1; } break;
case 3 : while(pasos > 0) { if (posLapiz[0] < (ancho - 1)) { plano[posLapiz[0]][posLapiz[1]] = estLapiz; posLapiz[0] += 1; plano[posLapiz[0]][posLapiz[1]] = estLapiz; } pasos -= 1; } break;
case 6 : while(pasos > 0) { if (posLapiz[1] < (alto-1)) { plano[posLapiz[0]][posLapiz[1]] = estLapiz; posLapiz[1]+=1; plano[posLapiz[0]][posLapiz[1]] = estLapiz; } pasos -= 1; } break;
case 9 : while(pasos > 0) { if (posLapiz[0] > 0) { plano[posLapiz[0]][posLapiz[1]] = estLapiz; posLapiz[0] -= 1; plano[posLapiz[0]][posLapiz[1]] = estLapiz; } pasos -= 1; } break; } }
void imprimir () { int i, j;
for (i=0; i < ancho; i++) { for (j=0; j < alto; j++ ) { if(plano[j][i] == 0) printf(" "); else { if (posLapiz[0] == j && posLapiz[1] == i ) printf("I "); else printf("x "); } } printf("\n"); } }
|