Ir para conteúdo

POWERED BY:

Arquivado

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

dudosurf

[Resolvido] Vetor

Recommended Posts

# 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
# 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

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

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

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

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

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

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

×

Informação importante

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