Torre de hanoi

362 palavras 2 páginas
#include <stdio.h>
#include <stdlib.h>

#define VAZIO 0
#define VENCE 1
#define OK 1
#define NO 0

char codigo[3] = {'A', 'B', 'C'}; int pos[3][9]; int discos;

// Prototipos das funcoes

void imprime_torre(void); void ini_torres(void); void troca_valores(int , int); void limpa_entrada(void); void limpatela(void); void interface(void); void venceu(void); void checa_termino(void);

int checa_integridade(int , int);

void limpatela (void)
{
system("cls");
}

void limpa_entrada (void)
{
fflush(stdin);
}

void checa_termino (void)
{
int i;

for (i = 0; i < discos; i++) if(pos[2][i] == VAZIO ) return ; venceu();
}

void venceu (void)
{
limpatela(); imprime_torre();

printf("\n\nVoce conseguiu! Parabens. \n\n"); exit(0);
}

void interface (void)
{
int orig, dest;

do { limpatela(); imprime_torre();

printf("\n\n>> Movimento (digite na forma \"origem destino\" (1,2,3): "); limpa_entrada(); scanf("%d %d", &orig, &dest); } while ((orig < 1) || (orig > 3) || (dest < 1) || (dest > 3));

troca_valores(orig-1, dest-1); checa_termino(); interface();
}

int checa_integridade (int orig, int dest)
{
int i=0, j=0;

while (pos[orig][i] == VAZIO) i++;

while ((pos[dest][j] == VAZIO) && (j < discos)) j++;

// if ((orig < 0) || (orig > 2)) return NO; // if ((dest < 0) || (dest > 2)) return NO; if (pos[dest][j] == VAZIO) return OK; return (pos[orig][i] > pos[dest][j]) ? NO : OK;
}

void troca_valores (int orig, int dest)
{
int i=0, j=0;

if(checa_integridade(orig ,dest) == NO) return ; while (pos[orig][i] == VAZIO) i++;

while ((pos[dest][j] == VAZIO) && (j < discos)) j++;

j -= 1;

pos[dest][j] = pos[orig][i]; pos[orig][i] = VAZIO;

return ;
}

void

Relacionados

  • Torre de Hanoi
    751 palavras | 4 páginas
  • torre de hanoi
    511 palavras | 3 páginas
  • Torre de hanoi
    1025 palavras | 5 páginas
  • Torre de hanói
    1028 palavras | 5 páginas
  • Torre de Hanói
    912 palavras | 4 páginas
  • Torre de Hanói
    1298 palavras | 6 páginas
  • Torre de Hanói
    544 palavras | 3 páginas
  • Torre de hanói
    1696 palavras | 7 páginas
  • Torre de hanói
    253 palavras | 2 páginas
  • Torre de hanoi
    699 palavras | 3 páginas