Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rose Yshii

Programa de adivinhação

Recommended Posts

Olá, eu fiz esse código para adivinhar o numero que o usuário pensou no intervalo de 0 a 1. Ele compilou, até aí tudo bem, mas ele não entra em nenhum if do código. Por exemplo, eu estou pensando no numero 1, a primeira pergunta é "O numero que você está pensando é maior, menor o igual a 5:" respondo com o simbolo menor "<", então o programa finaliza. Por favor me ajudem :D

 

P.S.: Eu sou nova por aqui.

/*Programador: Rosemeire Yshii
     Programa de adivinhação */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
	int vet [10]={1,2,3,4,5,6,7,8,9,10}, x;
	char resp;
	for (x=0;x<=10;x++){
		vet[x]=x;
	}
	printf ("\n----ADIVINHANDO----\n");
    printf ("\n Pense em um numero abaixo.\n");
	x=1;
	do{
     printf ("%d", vet[x]);
     x++;
	}while (x<=10);	
	x=5;
		printf ("\n O numero que voce pensou e >, < ou =:%d\n", vet[x]);
		scanf ("%s", &resp);
		
		if (resp=='>'){
			x=x+2;
			if (vet[x]==vet[7]||vet[x==vet[5]]){
				printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				scanf ("%s", &resp);
			 	if (resp=='>'){
					x=x+2;
			      if (vet[x]==vet[9]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%s", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 10!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 9!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 8!\n");
					
				      }
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 7!\n");
				}
				if (resp=='<'){
					printf("\n O numero que voc pensou foi 6!\n");
				  }
				
			    }
				
	        }   
	     }
	     if (resp=='='){
		   printf("\n O numero que voce pensou foi 5!\n");
		     }
        if (resp=='<'){
		   x=x-2;
			   if (vet[x]==vet[3]){
				printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				scanf ("%s", &resp);
				if (resp=='>'){
					printf ("\n O numero que voce pensou foi 4!\n");
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 3!\n");
				}
				if (resp=='<'){
					x=x-2;
			      if (vet[x]==vet[1]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%s", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 2!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 1!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 0!\n");
					
				      }
				  }				
			    }			 			
			   }
		}	
	        
        system("PAUSE");
        return 0;
    }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugiro começar entendendo por quê estes loops estão errados:

 

 

 

int vet [10]={1,2,3,4,5,6,7,8,9,10}, x;
// ...
 

for (x=0;x<=10;x++){ vet[x]=x; }
// ...
 

do{ printf ("%d", vet[x]); x++; }while (x<=10); 

 

Dica: pense no tamanho do vetor vet, e saiba que o resultado deles é comportamento indefinido.

Compartilhar este post


Link para o post
Compartilhar em outros sites
adivinhar o numero que o usuário pensou no intervalo de 0 a 1

É de 0 a 1 mesmo? Tem certeza? Não é de 0 a 10 (porque normalmente os programas desse tipo pedem inteiros ao invés de reais)

 

Os loops estão errados e o comportamento é indefinido porque você acessa a posição 10 quando o array vai de 0 até 9.

Compartilhar este post


Link para o post
Compartilhar em outros sites
/*Programador: Rosemeire Yshii
     Programa de adivinhação */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
	int vet [10], x;
	char resp;
	for (x=0;x<=10;x++){
		vet[x]=x;
	}
	printf ("\n----ADIVINHANDO----\n");
    printf ("\n Pense em um numero abaixo de 0a 10.\n");
	
	x=5;
		printf ("\n O numero que voce pensou e >, < ou =:%d\n", vet[x]);
		scanf ("%s", &resp);
		
		if (resp=='>'){
			x=x+2;
			if (vet[x]==vet[7]||vet[x==vet[5]]){
				printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				scanf ("%s", &resp);
			 	if (resp=='>'){
					x=x+2;
			      if (vet[x]==vet[9]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%s", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 10!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 9!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 8!\n");
					
				      }
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 7!\n");
				}
				if (resp=='<'){
					printf("\n O numero que voc pensou foi 6!\n");
				  }
				
			    }
				
	        }   
	     }
	     if (resp=='='){
		   printf("\n O numero que voce pensou foi 5!\n");
		     }
        if (resp=='<'){
		   x=x-2;
			   if (vet[x]==vet[3]){
				printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				scanf ("%s", &resp);
				if (resp=='>'){
					printf ("\n O numero que voce pensou foi 4!\n");
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 3!\n");
				}
				if (resp=='<'){
					x=x-2;
			      if (vet[x]==vet[1]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%s", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 2!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 1!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 0!\n");
					
				      }
				  }				
			    }			 			
			   }
		}	
	        
        system("PAUSE");
        return 0;
    }

Tentei arrumar o código.Sim você está certa, é de 0 a 10 mesmo hehe. Mas porque o loop está errado? Como seria o certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aahh cara você é um gênio, valeu!!



Ok, ele entra no if, só que tem a outra pergunta, então na hora de executar, ele faz a primeira pergunta e aparece a segunda pergunta, mas não lê nada e finaliza o programa. Olhe o código de novo:

/*Programador: Rosemeire Yshii
     Programa de adivinhação */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
	int vet [11], x;
	char resp;
	for (x=0;x<11;x++){
		vet[x]=x;
	}
	printf ("\n----ADIVINHANDO----\n");
    printf ("\n Pense em um numero abaixo de 0a 10.\n");
	
	x=5;
		printf ("\n O numero que voce pensou e >, < ou =:%d\n", vet[x]);
		scanf ("%c", &resp);
		
		if (resp=='>'){
			x=x+2;
			if (vet[x]==vet[7]){
				printf ("\n O numero que voce pensou e >,< ou =: %d\n", vet[x]);
				scanf ("%c", &resp);
			 	if (resp=='>'){
					x=x+2;
			      if (vet[x]==vet[9]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%c", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 10!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 9!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 8!\n");
					
				      }
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 7!\n");
				}
				if (resp=='<'){
					printf("\n O numero que voc pensou foi 6!\n");
				  }
				
			    }
				
	        }   
	     }
	     if (resp=='='){
		   printf("\n O numero que voce pensou foi 5!\n");
		     }
        if (resp=='<'){
		   x=x-2;
			   if (vet[x]==vet[3]){
				printf ("\n O numero que voce pensou e >,< ou =: %d\n", vet[x]);
				scanf ("%c", &resp);
				if (resp=='>'){
					printf ("\n O numero que voce pensou foi 4!\n");
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 3!\n");
				}
				if (resp=='<'){
					x=x-2;
			      if (vet[x]==vet[1]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%c", &resp);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 2!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 1!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 0!\n");
					
				      }
				  }				
			    }			 			
			   }
		}	
	        
        system("PAUSE");
        return 0;
    }

Compartilhar este post


Link para o post
Compartilhar em outros sites


printf ("\n Pense em um numero abaixo de 0a 10.\n");

// A primeira pergunta seria isto? Se for, está faltando ler o número...

 

x = 5;

 

printf ("\n O numero que voce pensou e >, < ou =:%d\n", vet[x]);

scanf ("%c", &resp);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu dei uma olhada no código: poderia explicar a função do array neste programa e comparações como esta:

if (vet[x] == vet[7])
if (vet[x] == vet[3])

? Eu não entendi o que está fazendo ali.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava vendo, aii a minha professora de Lógica disse o que estava faltando, é pq como eu li somente um caracter tem que limpar no buffering, com o fflush(stdin);

Você sabia? '-'

Olha o código aii::

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
	int vet [11], x;
	char resp;
	for (x=0;x<11;x++){
		vet[x]=x;
	}
	printf ("\n----ADIVINHANDO----\n");
    printf ("\n Pense em um numero abaixo de 0a 10.\n");
	
	x=5;
		printf ("\n O numero que voce pensou e >, < ou =:%d\n", vet[x]);
		scanf ("%c", &resp);
		fflush(stdin);
		if (resp=='>'){
			x=x+2;
			if (x==7){
				printf ("\n O numero que voce pensou e >,< ou =: %d\n", vet[x]);
				scanf ("%c", &resp);
				fflush(stdin);
			 	if (resp=='>'){
					x=x+2;
    	           if (x==9){
				   printf ("\n O numero que voce pensou e >,< ou =: %d", vet[x]);
				   scanf ("%c", &resp);
                 fflush(stdin);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 10!\n");
                  }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 9!\n");
                  }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 8!\n");
           }
               }
                  }	      
          }	
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 7!\n");
            }
				if (resp=='<'){
					printf("\n O numero que voc pensou foi 6!\n");
              }
				
			    
				
	          
           }
	     if (resp=='='){
		   printf("\n O numero que voce pensou foi 5!\n");
		     }
        if (resp=='<'){
		   x=x-2;
			   if (vet[x]==vet[3]){
				printf ("\n O numero que voce pensou e >,< ou =: %d\n", vet[x]);
				scanf ("%c", &resp);
				fflush(stdin);
				if (resp=='>'){
					printf ("\n O numero que voce pensou foi 4!\n");
				}
				if (resp=='='){
					printf ("\nO numero que voce pensou foi 3!\n");
				}
				if (resp=='<'){
					x=x-2;
			      if (vet[x]==vet[1]){
				   printf ("\n O numero que voce pensou e >,< ou =: %d\n", vet[x]);
				   scanf ("%c", &resp);
				   fflush(stdin);
				   if (resp=='>'){
					 printf ("\n O numero que voce pensou foi 2!\n");
				      }
				   if (resp=='='){
					 printf ("\nO numero que voce pensou foi 1!\n");
				      }
				   if (resp=='<'){
					 printf ("\n O numero que voce pensou foi 0!\n");
					
				      }
				  }				
			    }			 			
			   }
		}	
	        
        system("PAUSE");
        return 0;
    }

Agora dá pra adivinhar o numero que você está pensando ^^ hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.