jotaelle 0 Denunciar post Postado Junho 17, 2009 Acredito ter feito exatamente isto no meu codigo, mas não está fazendo o que precisa fazer, se puder dar um help agradeço: Caso o susuario digite sim, entraria no segundo while e pesquisaria um novo numero. estou usando o DEVC++ Segue o codigo: #include <stdio.h> #include <stdlib.h> #include <conio2.h> int main() { int i, x; int ini=1, fim=100; int suce=0, nsuce= 0, teste = 0, meio, flag=0; int contp=0; int vet[100]; char cont='s'; printf("\n------------------------------------------------------------------"); printf("\nIMPRIMINDO O VETOR\n\n"); for(i=1;i<=100;i++) { vet[i] = i; vet[i] = vet[i] + i/2; printf("%d ", vet[i]); } while(cont == 's') { flag = 0; printf("\n\nDigite um valor para ser pesquisado no vetor: \n"); scanf("%d ",&x); while(ini <= fim && flag==0) { meio = (ini + fim) / 2; if(vet[meio] == x) { contp = contp + 1; printf("\nNumero encontrado %d \n", vet[meio]); suce = suce + 1; teste = teste + 1; flag = 1; } else if(vet[meio] < x) { ini = meio + 1; teste = teste + 1; nsuce = nsuce + 1; } else { fim = meio - 1; teste = teste + 1; nsuce = nsuce + 1; } } // " * " (supressão), na string de formatação, //diz para o scanf ler tudo e descartar qualquer coisa. printf("Deseja fazer outra pesquisa ? (s/n): "); scanf("%%c%*c", &cont); printf("conf = %c*c", cont); } printf("\nPesquisas ", contp); printf("\nNumero encontrado %d ", vet[meio]); printf("\nNumero de teste%d \n ", teste); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 17, 2009 Cara, você só quer ignorar um char: scanf("%c%*c", &cont); printf("conf = %c", cont); Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Junho 18, 2009 Cara, encontrei o teu problema, tinha me passado um scanf... na linha 26: scanf("%d%*c",&x);é o correto! pq era o '\n' desse scanf que ficava no buffer. Compartilhar este post Link para o post Compartilhar em outros sites
jotaelle 0 Denunciar post Postado Junho 19, 2009 Brother, chegou a executar ele? Entrou em loop infinito. Executei no devc++. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 19, 2009 for(i=1;i<=100;i++) { vet[i] = i; vet[i] = vet[i] + i/2; printf("%d ", vet[i]); } Arrays começam do zero. scanf("%d ",&x); Retire o espaço. ------------------------------------------------------------------IMPRIMINDO O VETOR 1 3 4 6 7 9 10 12 13 15 16 18 19 21 22 24 25 27 28 30 31 33 34 36 37 39 40 42 43 45 46 48 49 51 52 54 55 57 58 60 61 63 64 66 67 69 70 72 73 75 76 78 79 81 82 84 85 87 88 90 91 93 94 96 97 99 100 102 103 105 106 108 109 111 112 114 115 117 118 120 121 123 124 126 127 129 130 132 133 135 136 138 139 141 142 144 145 147 148 150 Digite um valor para ser pesquisado no vetor: 1 Numero encontrado 1 Deseja fazer outra pesquisa ? (s/n): s Pesquisas Numero encontrado 1 Numero de teste6 Arrume teu código, porque ele encontra número que não existe. ------------------------------------------------------------------IMPRIMINDO O VETOR 1 3 4 6 7 9 10 12 13 15 16 18 19 21 22 24 25 27 28 30 31 33 34 36 37 39 40 42 43 45 46 48 49 51 52 54 55 57 58 60 61 63 64 66 67 69 70 72 73 75 76 78 79 81 82 84 85 87 88 90 91 93 94 96 97 99 100 102 103 105 106 108 109 111 112 114 115 117 118 120 121 123 124 126 127 129 130 132 133 135 136 138 139 141 142 144 145 147 148 150 Digite um valor para ser pesquisado no vetor: 50 Deseja fazer outra pesquisa ? (s/n): s Pesquisas Numero encontrado 49 Numero de teste7 ------------------------------------------------------------------IMPRIMINDO O VETOR 1 3 4 6 7 9 10 12 13 15 16 18 19 21 22 24 25 27 28 30 31 33 34 36 37 39 40 42 43 45 46 48 49 51 52 54 55 57 58 60 61 63 64 66 67 69 70 72 73 75 76 78 79 81 82 84 85 87 88 90 91 93 94 96 97 99 100 102 103 105 106 108 109 111 112 114 115 117 118 120 121 123 124 126 127 129 130 132 133 135 136 138 139 141 142 144 145 147 148 150 Digite um valor para ser pesquisado no vetor: 300 Numero encontrado 300 Deseja fazer outra pesquisa ? (s/n): s Pesquisas Numero encontrado 300 Numero de teste7 Presta atenção no código e vê se você tá reinicializando as variáveis antes de refazer a busca binária. Compartilhar este post Link para o post Compartilhar em outros sites