elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Re: Problema contador en C en: 3 Marzo 2014, 00:05 am
Soy nuevo y no sé todavía como enviar código junto con comentarios. He enviado el código en el mensaje anterior y el comentario ahora.

Bueno, el caso es que he toqueteado el programita y funciona.

Saludos
12  Programación / Programación C/C++ / Re: Problema contador en C en: 3 Marzo 2014, 00:03 am
#include <stdio.h>
#include <conio.h>

void dibuja_tabla(int tabla[10][10]);

enum sentido {izquierda, derecha };

int main()
{
  int inicio,i,j, sinsalida;
  sentido direccion;
  char ch;

  int matriu[10][10]={
  {0,0,0,0,0,0,0,0,0,0},
  {0,1,0,0,1,0,0,0,1,0},
  {0,1,0,1,0,0,0,1,0,0},
  {0,1,0,0,0,0,1,0,0,0},
  {0,0,0,0,0,0,0,0,0,1},
  {0,1,1,1,1,0,0,0,1,0},
  {0,0,0,0,0,0,0,1,0,0},
  {1,0,0,0,0,0,1,0,0,0},
  {0,1,0,0,0,1,0,0,0,0},
  {0,0,1,0,0,0,0,0,0,0},
  };

  do{
  printf("\nIntroducir el numero de columna por el cual desea lanzar la primera bola: ");
  scanf("%d",&inicio);
  }while(inicio>9);

  do{
  printf("\nEn caso de encontrarse con un obstaculo, en que direccion quiere que se dirija la bola, derecha (D) o izquierda (I): ");
  fflush(stdin);
  scanf("%c", &ch);
  }while(ch!='D' && ch!='d' && ch!='I' && ch!='i');

  if (ch == 'D' || ch == 'd') direccion = derecha;
     else direccion = izquierda;


 i = 0;
 j = inicio;
 sinsalida = 0;
 matriu[j]=25;
 while ((i<9)&& (!sinsalida)) {   //bucle mientras que no llegue abajo
    if (matriu[i+1][j]==1) {      // si hay obstaculo debajo de la bola
      switch (direccion) {
         case derecha:
            if ((j<9)&& (matriu[j+1]!=1)){
               j++;                          //si puede ir a la derecha y esta libre
               matriu[j]= 26;            //marcar el camino
               }  else {
                  sinsalida = 1;            //si no puede ir a la derecha
                  }
            break;
         case izquierda:
            if ((j>0) && (matriu[j-1]!=1)){
               j--;                            //si puede ir a la izquierda y esta libre
               matriu[j]= 27;             //marcar el camino
               }    else {
                  sinsalida = 1;             //si no puede ir a la izquierda
                  }
            break;
         }
        } else {                      //si llega aqui es porque puede bajar
         i++;                        // baja un nivel
         matriu[j]=25;           // marca el descenso de un nivel
         }

    }

 if (i==9) {                      //sale con exito
    printf("\nExito. Bola llega al final en posicion %d, %d \n\n", i, j);
    } else printf("\nFracaso. Bola atrapada en posicion %d, %d \n\n", i, j);

   dibuja_tabla(matriu);

   getch();
   return 0;
}

void dibuja_tabla(int tabla[10][10])      // Imprime tabla
{
   int i, j;

  for(i=0;i<10;i++)  {
     printf("\t%d- ", i);
        for(j=0;j<10;j++)
         {
            if(tabla[j]==1) printf("X ");
               else if(tabla[j]==0) printf(". ");
                   else printf("%c ", tabla[j]);
         }
     printf("\n");
     }

}
Código
  1. [code=cpp]
[/code]
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines