Ir ao conteúdo
  • Cadastre-se

Rodrigospringfield89

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

posts postados por Rodrigospringfield89

  1. @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");
       }
    	
    }

     

    • Curtir 1
  2. @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!

    • Curtir 1
  3. 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;
    } 

     

    • Curtir 1

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!