Ir ao conteúdo
  • Cadastre-se

Rodrigospringfield89

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

5
  1. @devair1010 Muito obrigado Devair, agora solucionou todos os problemas. Finalmente consegui arrumar o código. Muito obrigado pela atenção e pela ajuda. Peço desculpas se enviei muitas mensagens. Um cordial abraço!
  2. @devair1010 Muito obrigado, funcionou perfeitamente Devair com o do while. Mas as condições de vitória e derrota que criei não estão sendo implementadas pelo programa, se eu coloco um nº maior em cima do menor, a condição não funciona. Obrigado novamente pela ajuda! void cvitoria(){//função para definir a condição de vitória ou derrota if(torre[2][1]==3 && torre[1][1]==2 && torre[0][1]==1){ printf("\n\nParabens, voce conseguiu colocar os discos na ordem correta!"); printf("\n\nVoce venceu!\n\n"); vitoria++; } if(torre[2][2]==3 && torre[1][2]==2 && torre[0][2]==1){ printf("\n\nParabens, voce conseguiu colocar os discos na ordem correta!"); printf("\n\nVoce venceu!\n\n"); vitoria++; } if(torre[2][1]==1 && torre[1][1]==2){ printf("\n\n voce colocou o disco maior em cima do menor!"); printf("\n\nVoce perdeu!\n\n"); } }
  3. Mas agora não consigo marcar na última posição das outras torres. É no laço de repetição que tenho que alterar? Pois já tentei de tudo e não marca direito.
  4. @devair1010 Muito obrigado pela ajuda Devair. Agora está marcando os números nas outras torres. Agora estou quebrando a cabeça para colocar o numero na última posição da torre escolhida. Por exemplo, se eu quero mover da torre 1 para 2, o primeiro nº escolhido, no caso o 1 deve ir para a última posição da torre 2 ou 3. Obrigado novamente pela ajuda!
  5. Olá companheiros do fórum, tudo bom com vocês? Estou tentando programar o jogo da Torre de Hanói em C, mas não consigo resolver um problema. O objetivo do jogo é passar os nº 1,2 3 para as outras duas torres, e o nº 1 deve ficar sempre no topo, nunca embaixo do 2 ou 3. O problema é que quando eu digito o nº 1 para colocar ele na torre 2 ou 3, o mesmo não é marcado no tabuleiro do jogo. O tabuleiro fiz como sendo uma matriz 3x3. Já tentei de tudo, mas não consigo resolver o problema citado anteriormente. Peço por gentileza, que alguém possa me dar uma luz de como eu poderia resolver o mesmo. Agradeço desde já pela atenção. Um cordial abraço. O código do programa em C #include<stdio.h> #include<stdlib.h> int torre[3][3]; int eto,etd; int linha; int aux=0; void torres(){ for(linha=0;linha<3;linha++){//criação das torres do jogo torre[linha][0]=0; torre[linha][1]=0; torre[linha][2]=0; } torre[0][0] = 1; torre[1][0] = 2; torre[2][0] = 3; } void exibirpainel(){ printf("\n\n---------------------BEM VINDO AO TORRE DE HANOI 2.0---------------------");//Criação do menu printf("\n\nSeu objetivo e passar os discos para as outras torres em ordem crescente"); printf("\n\nO disco 1 deve ficar sempre no topo da torre"); printf("\n\n"); } void exibirtorres(){//função para exibir as torres durante o jogo for(linha=0;linha<3;linha++){ printf("%d\t %d\t %d\t\n", torre[linha][0], torre[linha][1], torre[linha][2]); } } void escolha(){//função para escolher as torres printf("\n\nInforme a torre origem: \n\n(1) - Torre 1 \n(2) - Torre 2 \n(3) - Torre 3 \n\n "); scanf("%d", &eto); printf("\n\nInforme a torre destino: \n\n(1) - Torre 1 \n(2) - Torre 2 \n(3) - Torre 3 \n\n "); scanf("%d",&etd); if(eto==1){//laço para zerar o disco escolhido na torre de origem for(linha=0;linha<3;linha++){ if(torre[linha][0]>0){ aux=torre[linha][0];//auxiliar armazena o valor escolhido torre[linha][0]=0; torre[linha][etd-1]=aux;//auxiliar marca o valor no tabuleiro exibirtorres(); escolha(); } } } else if(eto==2){ for(linha=0;linha<3;linha++){ if(torre[linha][1]>0){ aux=torre[linha][1]; torre[linha][1]=0; torre[linha][etd-1]=aux; exibirtorres(); escolha(); } } } else if(eto==3){ for(linha=0;linha<3;linha++){ if(torre[linha][2]>0){ aux=torre[linha][2]; torre[linha][2]=0; torre[linha][etd-1]=aux; exibirtorres(); escolha(); } } } if(etd==1){//marcar na torre destino for(linha=2;linha>-1;linha--){ if(torre[linha][0]==0){ torre[linha][0]=aux; exibirtorres(); escolha(); } } } else if(etd==2){ for(linha=2;linha>-1;linha--){ if(torre[linha][1]==0){ torre[linha][1]=aux; exibirtorres(); escolha(); } } } else if(etd==3){ for(linha=2;linha>-1;linha--){ if(torre[linha][2]==0){ torre[linha][2]=aux; exibirtorres(); escolha(); } } } } int main(){ torres(); exibirpainel(); exibirtorres(); escolha(); return 0; }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!