dudosurf 0 Denunciar post Postado Junho 17, 2008 # define TAM 5 # include <stdio.h> int main(){ int num[TAM], i; for(i = 0; i < TAM; i++){ printf("Digite o %dª numero ",i+1); scanf("%d",&num[i]); } for(i = 0; i<TAM; i++){ if(num[i] < ?){ } } printf("O menor numero e %d",i); system("PAUSE"); }Bom pessoal, estou iniciando com vetores e o que eu imeginei nesse caso seria comparar num que são os numeros digitados com alguma variavél, se alguem me ajudar ta valendo .... o que eu preciso imprimir no final é: O menor número do vetor e quantas vezes ele aparece Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 17, 2008 # define TAM 5 # include <stdio.h> int main(void){ int num[TAM], i; for(i = 0; i < TAM; i++){ printf("Digite o %dª numero ",i+1); scanf("%d",&num[i]); } int min = num[0]; i = 0; while (i<TAM) { if (min > num[i]) min = num[i]; i++; } int count=0; i =0; while(i<TAM) { if (num[i] == min) count++; i++; } printf("O menor numero e %d",min); printf("Contagem:%d\n",count); } Compartilhar este post Link para o post Compartilhar em outros sites
dudosurf 0 Denunciar post Postado Junho 17, 2008 Nusss... fera d+ Obrigado http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
PH_Nikit 0 Denunciar post Postado Junho 17, 2008 pow ... eu acho q você vai entender melhor com esse código!!!!!!! tá bem mastigado!!!!! # include <stdio.h> # define TAM 10 int main() { int vet[TAM],i,cont=0,min; for(i = 0; i < TAM; i++) { printf("Digite um numero: "); scanf("%d",&vet[i]); } min = vet[0]; for(i = 1; i < TAM; i++) { if( vet[i] < min ) { min = vet[i]; if (min == vet[i]) cont++; else cont=0; } } printf("O menor numero e %d",min); printf("Contagem:%d\n",cont); system("pause"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
PH_Nikit 0 Denunciar post Postado Junho 17, 2008 Qualquer Dúvida é só postar!!!!! Vlw Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 17, 2008 O programa falha: for(i = 1; i < TAM; i++) { if( vet[i] < min ) { min = vet[i]; if (min == vet[i]) cont++; else cont=0; } } vet = 4 -4 -4 1 6 min <- 4 : i<-1 , min <- -4 , cont <- 1 min = -4: i = 2, cont = 1 (quando deveria ser incrementado) Compartilhar este post Link para o post Compartilhar em outros sites
PH_Nikit 0 Denunciar post Postado Junho 17, 2008 O programa falha: for(i = 1; i < TAM; i++) { if( vet[i] < min ) { min = vet[i]; if (min == vet[i]) cont++; else cont=0; } } vet = 4 -4 -4 1 6 min <- 4 : i<-1 , min <- -4 , cont <- 1 min = -4: i = 2, cont = 1 (quando deveria ser incrementado) Cara ... eu compilei antes de postar, funciona sim ... copie o meu codigo e rode para ver!!!!!! o cont só incrementa quando o min é igual, assim que um novo valor min aparece o contador zera e começa a contar novamente, especificamente para esse novo min. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 17, 2008 Se tiver uma sequencia de minimos,ele nao vai entrar no if e nao vai incrementar o contador. Já que você não acredita,olha o debugger: (gdb) r Starting program: /home/bcc/ib03/src/C/min Digite um numero: 4 Digite um numero: -4 Digite um numero: -4 Digite um numero: 5 Digite um numero: 7 Digite um numero: 23 Digite um numero: 56 Digite um numero: 78 Digite um numero: 845 Digite um numero: 3232 Breakpoint 1, main () at min.c:13 13 if( vet < min ) { 3: cont = 0 2: min = 4 1: vet = -4 (gdb) c Continuing. Breakpoint 2, main () at min.c:16 16 if (min == vet) 3: cont = 0 2: min = -4 1: vet = -4 (gdb) c Continuing. Breakpoint 1, main () at min.c:13 13 if( vet < min ) { 3: cont = 1 2: min = -4 1: vet = -4 (gdb) s 12 for(i = 1; i < TAM; i++) { 3: cont = 1 2: min = -4 1: vet = -4 (gdb) Compartilhar este post Link para o post Compartilhar em outros sites
PH_Nikit 0 Denunciar post Postado Junho 17, 2008 Tem Razão .... Agora eu entendi o q você quis dizer... mas para resolver isso é só colocar um <=; .. if( vet <= min ) for(i = 1; i < TAM; i++) { if( vet[i] <= min ) { min = vet[i]; if (min == vet[i]) cont++; else cont=0; } } msm assim valeu o toque !!!!! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Junho 17, 2008 Se a questao eh economizar instrucao, jogue a atribuicao pro else. Ou melhor ainda:tire o if. for(i=1;i<MAX;i++) { if (min == vet[i]) cont++; else if (min > vet[i]) { min = vet[i]; cont=0; } } Compartilhar este post Link para o post Compartilhar em outros sites