VegasColt 0 Denunciar post Postado Outubro 12, 2009 bem eu to com problemas com vetor e da pra perceber isso pelos meus topicos,mas e tanto pesquisar e com a ajuda de você,econtrei algo parecido com q eu quero so q em vez de vetor e com matriz vou postar o codigo #include <stdio.h> int matriz[3][3]; int examina_matriz(int x){ int i, j; for(i=0; i<3; i++) { for(j=0; j<3; j++) { if(x == matriz[i][j]){ return 1;} } } return 0; } void ler(int lin, int col){ int x, y; printf("\n\nDigite 9 numeros de 1 a 9 e pressione enter"); scanf("%d", &x); while(x<1 || x>9){ printf("\nErro!!! os numeros so podem ser de 1 a 9 somente\n"); scanf("%d", &x); getchar(); } y = examina_matriz(x); if(y == 1){ printf("Erro"); ler(lin, col); } else { matriz[lin][col] = x; } } void cria_matriz(){ int lin, col; for(lin=0; lin<3; lin++){ for(col=0; col<3; col++){ ler(lin, col ); } } } int main(){ cria_matriz(); return 0; } entao estudando esse codigo montei um outro so q com vetor,so q nao sei se to errando em logica,pois eu nao to conseguindo executar ele #include <stdio.h> #include <stdlib.h> int vetor[5]; int examina_vetor(int x) { int i, j; for(i=0; i<5; i++) { if(x == vetor[i]) { return 1; } return 0; } } int main(int i) { int x, y; printf("\n\n Digite um Numero"); scanf("%d", &x); y = examina_vetor(x); if(y == 1) printf("Erro"); scanf("%d",&x); vetor[i] = x; } system("pause"); return (0); } alguem poderia me ajudar sem querer abusar eu to chegando,eu so lento mesmo...eehhhe Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Outubro 12, 2009 int i, j; j não é utilizado nessa função. y = examina_vetor(x); if(y == 1) printf("Erro"); scanf("%d",&x); Tenta assim: if(examina_vetor(x)) { printf("Erro"); scanf("%d",&x); } Pra fazer o código funcionar mesmo, tu vai precisar botar mais loops. Acho que precisaria dar um jeito de inicializar esse vetor antes de usar ele ou então fazer o programa 'lembrar' qual foi o último número digitado e só examinar até ele, senão você vai ficar comparando o número digitado com lixo da memória que fica nos espaços não inicializados do vetor. Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Outubro 12, 2009 int i, j; j não é utilizado nessa função. y = examina_vetor(x); if(y == 1) printf("Erro"); scanf("%d",&x); Tenta assim: if(examina_vetor(x)) { printf("Erro"); scanf("%d",&x); } Pra fazer o código funcionar mesmo, tu vai precisar botar mais loops. Acho que precisaria dar um jeito de inicializar esse vetor antes de usar ele ou então fazer o programa 'lembrar' qual foi o último número digitado e só examinar até ele, senão você vai ficar comparando o número digitado com lixo da memória que fica nos espaços não inicializados do vetor. como aplicaria esses loopings? e como eu inicializaria o vetor? no caso eu teria q atribuir um valor inicial pra o vetor? Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Outubro 13, 2009 int i, j; j não é utilizado nessa função. y = examina_vetor(x); if(y == 1) printf("Erro"); scanf("%d",&x); Tenta assim: if(examina_vetor(x)) { printf("Erro"); scanf("%d",&x); } Pra fazer o código funcionar mesmo, tu vai precisar botar mais loops. Acho que precisaria dar um jeito de inicializar esse vetor antes de usar ele ou então fazer o programa 'lembrar' qual foi o último número digitado e só examinar até ele, senão você vai ficar comparando o número digitado com lixo da memória que fica nos espaços não inicializados do vetor. como aplicaria esses loopings? e como eu inicializaria o vetor? no caso eu teria q atribuir um valor inicial pra o vetor? Esse loop eu digo para ler cada valor do vetor. No caso, eu sugiro fazer tipo assim: para x = 0 até < tamanho_vetor lê valor para temp enquanto (temp existe no vetor) lê valor denovo para temp guarda temp no vetor Pra verificar se temp existe no vetor, tu pode fazer para x = 0 até < x se valor == vetor[x] o valor já existe Claro, isso é um protótipo de algoritmo so rsrsrs falta implementar tudo como ficaria na programação, lógico que tu não vai fazer um for dentro de um while, tu vai criar uma nova função que possivelmente vai receber o vetor, o valor digitado, e o x do primeiro for (para que a função verifique apenas os números que já foram digitados). /// Inicializar o vetor é tipo... definir todas as posições pra algum valor ou então aplicar um memset nele. Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Outubro 13, 2009 int i, j; j não é utilizado nessa função. y = examina_vetor(x); if(y == 1) printf("Erro"); scanf("%d",&x); Tenta assim: if(examina_vetor(x)) { printf("Erro"); scanf("%d",&x); } Pra fazer o código funcionar mesmo, tu vai precisar botar mais loops. Acho que precisaria dar um jeito de inicializar esse vetor antes de usar ele ou então fazer o programa 'lembrar' qual foi o último número digitado e só examinar até ele, senão você vai ficar comparando o número digitado com lixo da memória que fica nos espaços não inicializados do vetor. como aplicaria esses loopings? e como eu inicializaria o vetor? no caso eu teria q atribuir um valor inicial pra o vetor? Esse loop eu digo para ler cada valor do vetor. No caso, eu sugiro fazer tipo assim: para x = 0 até < tamanho_vetor lê valor para temp enquanto (temp existe no vetor) lê valor denovo para temp guarda temp no vetor Pra verificar se temp existe no vetor, tu pode fazer para x = 0 até < x se valor == vetor[x] o valor já existe Claro, isso é um protótipo de algoritmo so rsrsrs falta implementar tudo como ficaria na programação, lógico que tu não vai fazer um for dentro de um while, tu vai criar uma nova função que possivelmente vai receber o vetor, o valor digitado, e o x do primeiro for (para que a função verifique apenas os números que já foram digitados). /// Inicializar o vetor é tipo... definir todas as posições pra algum valor ou então aplicar um memset nele. tipo assim for x = 0 < i (i e o contador do vetor scanf("%d",&valor) para temp while (temp==vetor) scanf("%d",&valor) guarda temp no vetor --> isso eu nao entendi for(x=0 até < x)--> nao sei como substituir isso if valor == vetor[x] printf(" o valor já existe") tipo ta meio porco e so pra ver se eu entendi a logica Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Outubro 13, 2009 Tenta assim: int temp; for( x = 0 ; x < i ; x++ ) //(i e o contador do vetor { do { scanf("%d", &temp); } while (existeNoVetor(vetor, temp, x)); //um exemplo vetor[x] = temp; } O segundo código no caso seria a função existeNoVetor: int existeNoVetor(int[] vetor, int valor, int indice) { for( i = 0 ; i < indice ; i++) { if( valor == vetor[i] ) { return 1; //só nos interessa informar ao código anterior se foi encontrado ou não o valor no vetor } } return 0; } Sacou a implementação mais ou menos? Só não vou explicar melhor agora porque to podre de cansado, amanhã quando tu tiver postado as dúvidas aí eu venho e respondo elas. Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Outubro 13, 2009 Tenta assim: int temp; for( x = 0 ; x < i ; x++ ) //(i e o contador do vetor { do { scanf("%d", &temp); } while (existeNoVetor(vetor, temp, x)); //um exemplo vetor[x] = temp; } O segundo código no caso seria a função existeNoVetor: int existeNoVetor(int[] vetor, int valor, int indice) { for( i = 0 ; i < indice ; i++) { if( valor == vetor[i] ) { return 1; //só nos interessa informar ao código anterior se foi encontrado ou não o valor no vetor } } return 0; } Sacou a implementação mais ou menos? Só não vou explicar melhor agora porque to podre de cansado, amanhã quando tu tiver postado as dúvidas aí eu venho e respondo elas. o q seria o indice?? e por que tem vetor[x] e vetor? e tipo eu faria essas duas funções e chamaria elas no int main,ou nao precisaria? Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Outubro 13, 2009 po cara,desculpe ta sendo chato... e q nao da pra apagar minha resposta anterior... tipo eu começei a seguir sua linha re raciocionio e comecei a testa o q você ta falando eu cheguei no seguinte ponto,vendo tudo q você me explicou aqui #include <stdio.h> #include <stdlib.h> //--------------------------------------------------------------------------------// int examina_vetor(int x) { int i,vetor[10]; vetor[0]=0; for(i=0;i<10;i++) { if(x == vetor[i]) { return 1; } return 0; } } //--------------------------------------------------------------------------------// int main() { int i,x,vetor[10]; for(i=0;i<10;i++) { printf("Por Favor Digite um Numero %d \t",i); scanf("%d",&x); if(examina_vetor(x)==1) while(examina_vetor(x)==1); { printf("numero ja digitado digite novamente %d \t",i); scanf("%d",&x); } if(examina_vetor(x)==0) x = vetor[i]; } system("pause"); return(0); } agora o programa executa,so q ta um erro assim.... e quando coloco no codigo pra imprimir o vetor da esse erro aqui pelo menos ta rodando e sanando esses erros ta pronto....to aprendendo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 13, 2009 você qr tipo isso: #include <stdio.h> #include <stdlib.h> int examina_vetor(int vetor[], int x){ int i, retorno; retorno = 0; for(i=0;i<10;i++) if(x == vetor[i]) retorno = 1; return retorno; } int main(){ int i,x,vetor[10]; memset(vetor,-999,sizeof(int)*10); for(i=0;i<10;i++){ printf("%d - Por Favor Digite um Numero: ",i); scanf("%d%*c",&x); while(examina_vetor(vetor, x)==1){ printf("%d - Numero ja digitado digite novamente: ",i); scanf("%d%*c",&x); } vetor[i] = x; } system("pause"); return 0; } []s Compartilhar este post Link para o post Compartilhar em outros sites
VegasColt 0 Denunciar post Postado Outubro 13, 2009 você qr tipo isso: #include <stdio.h> #include <stdlib.h> int examina_vetor(int vetor[], int x){ int i, retorno; retorno = 0; for(i=0;i<10;i++) if(x == vetor[i]) retorno = 1; return retorno; } int main(){ int i,x,vetor[10]; memset(vetor,-999,sizeof(int)*10); for(i=0;i<10;i++){ printf("%d - Por Favor Digite um Numero: ",i); scanf("%d%*c",&x); while(examina_vetor(vetor, x)==1){ printf("%d - Numero ja digitado digite novamente: ",i); scanf("%d%*c",&x); } vetor[i] = x; } system("pause"); return 0; } []s po brother e isso mesmo,so q tipo tem q dar um #include <string.h> pro memset funciona obrigado mesmo pessoal, aprendi bastante Obrigado Jose Eugenio e Quitzaaum e a todos q leram e queimaram a mufa pra me ajudar Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 14, 2009 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites