Ir ao conteúdo
  • Cadastre-se

C questão sobre vetorer. ler o menor valor.


Ir à solução Resolvido por Midori,

Posts recomendados

faça um programa que leia do teclado vinte valores inteiros, guarde-os em um vetor e determine qual o menor dos valores lidos. O programa deve imprimir na tela o valor e o índice do menor elemento encontrado.

for example:

input                                     result

2  7  2   4  5   8                       menor:  5

                                                  indice : 8

#include < stdio.h>
  int encontremenor ( float vetor[], int tam)
  {
  int i, indice=0;
  int menor = vetor [0];
  for (i = 1; i< tam; i++)
  {
    if (vetor[i] < menor)
  {
  menor = veotr[i];
  indice = i;
  }
  }
  return indice;
  }
  int main()
  {
  int vet[20] = { 1, 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
  int pos;
  pos = encontremenor(vet,20);
  printf("%d", pos);
  return 0;
  
  

 

Link para o comentário
Compartilhar em outros sites

@Caio Fagundes21 O argumento passado pra função não tem correspondência com o parâmetro, já que o vetor `vet` declarado na main é do tipo int e o primeiro parâmetro de encontremenor() é um float. Deveria ser int também.

1 hora atrás, Caio Fagundes21 disse:
int encontremenor ( float vetor[], int tam)

Aliás...

1 hora atrás, Caio Fagundes21 disse:
menor = veotr[i];

É vetor, não veotr.

E também...

1 hora atrás, Caio Fagundes21 disse:
#include < stdio.h>

Esse espaço que deu depois do < causou um erro aqui.

Link para o comentário
Compartilhar em outros sites

2 horas atrás, Caio Fagundes21 disse:

input                                     result

2  7  2   4  5   8                       menor:  5

                                                  indice : 8

Uma dúvida nessa parte:

Se o menor foi 5, o indice não deveria ser 4?
Já que vetor começamos do zero [0], [1], [2],...

Link para o comentário
Compartilhar em outros sites

@Talyson Maia no caso, esse é um exemplo 

@ricardo_br e um exemplo da resposta

 

10 horas atrás, Caio Fagundes21 disse:

faça um programa que leia do teclado vinte valores inteiros, guarde-os em um vetor e determine qual o menor dos valores lidos. O programa deve imprimir na tela o valor e o índice do menor elemento encontrado.

for example:

input                                     result

2  7  2   4  5   8                       menor:  5

                                                  indice : 8

#include < stdio.h>
  int encontremenor ( float vetor[], int tam)
  {
  int i, indice=0;
  int menor = vetor [0];
  for (i = 1; i< tam; i++)
  {
    if (vetor[i] < menor)
  {
  menor = veotr[i];
  indice = i;
  }
  }
  return indice;
  }
  int main()
  {
  int vet[20] = { 1, 2,3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
  int pos;
  pos = encontremenor(vet,20);
  printf("%d", pos);
  return 0;
  
  

 

preciso achar uma forma de expressar não só o valor, mas o indice também...

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Midori disse:

@Caio Fagundes21 Com as correções apontadas por @Lucca Rodrigues use o retorno da função para mostrar o valor e índice,

printf("Menor valor = %d\n", vet[pos]);
printf("Indice do valor = %d\n", pos);

 

alguma alteração na moldura e necessaria ?

  • Amei 1
Link para o comentário
Compartilhar em outros sites

int main(){
    int indice, menor=0;
    int valor[20];

    printf("Digite 10 valores: \n");
    
    for (indice = 0;indice < 20; indice++){
      printf("Valor %d : ", indice+1);
      scanf("%d", &valor[indice]);
      
      if(indice == 0){menor = valor[indice];}
         {
          menor = valor[indice];
      }
      else{
        if(valor[indice] < menor){
            menor = valor[indice];
        }
      }
    }
    printf("\nMenor = índice %d com valor %d\n",indice, menor);
    
    return 0;
}

@Midori usando for e if else, cheguei a algo o que se a semelha ao que voce disse (eu acho)

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Caio Fagundes21 Não precisa desse if no loop porque a sua função já retorna a informação necessária.

 

#include <stdio.h>

#define MAX 20

int encontremenor(int vetor[], int tam){
    int indice = 0;
    int menor = vetor[0];
    for(int i = 0; i < tam; i += 1){
        if(vetor[i] < menor){
            menor = vetor[i];
            indice = i;
        }
    }
    return indice;
}

int main(){
    int vet[MAX];
    int pos;
    
    for(int indice = 0; indice < MAX; indice += 1){
        printf("Valor %d: ", indice);
        scanf("%d", &vet[indice]);
    }
    pos = encontremenor(vet, MAX);
    printf("\nMenor = índice %d com valor %d\n", pos, vet[pos]);
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Midori ok. Mas no caso, você acertou o indice, mas o menor digito esta como o meu, dando varios valores e não o menor. o ultimo printf esta correto  

#include <stdio.h>

#define MAX 20

int encontremenor(int vetor[], int tam){
    int indice = 0;
    int menor = vetor[0];
    for(int i = 0; i < tam; i += 1){
        if(vetor[i] < menor){
            menor = vetor[i];
            indice = i;
        }
    }
    return indice;
}

int main(){
    int vet[MAX];
    int pos;
    
    for(int indice = 0; indice < MAX; indice += 1){
        printf("Valor %d: ", indice);
        scanf("%d", &vet[indice]);
    }
    pos = encontremenor(vet, MAX);
    printf("\nIndice: %d", pos);
    return 0;
}
 

 

  • Curtir 1
  • Confuso 1
Link para o comentário
Compartilhar em outros sites

19 horas atrás, Caio Fagundes21 disse:

@Midori ok. Mas no caso, você acertou o indice, mas o menor digito esta como o meu, dando varios valores e não o menor. o ultimo printf esta correto  

#include <stdio.h>

#define MAX 20

int encontremenor(int vetor[], int tam){
    int indice = 0;
    int menor = vetor[0];
    for(int i = 0; i < tam; i += 1){
        if(vetor[i] < menor){
            menor = vetor[i];
            indice = i;
        }
    }
    return indice;
}

int main(){
    int vet[MAX];
    int pos;
    
    for(int indice = 0; indice < MAX; indice += 1){
        printf("Valor %d: ", indice);
        scanf("%d", &vet[indice]);
    }
    pos = encontremenor(vet, MAX);
    printf("\nIndice: %d", pos);
    return 0;
}
 

 

ninguem??

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

19 horas atrás, Caio Fagundes21 disse:

o menor digito esta como o meu, dando varios valores e não o menor

🤔

Nesse código que postou não é impresso o menor dígito, apenas o índice.

O código de @Midori funciona, basta pegar o retorno da função, que é a posição no vetor `vet` onde o menor valor se encontra, e usar de índice.

Em 16/07/2021 às 09:07, Midori disse:
printf("\nMenor = índice %d com valor %d\n", pos, vet[pos]);
  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Não entendo de C mais eu fiz um batch que faz isso pegar o valor menor, maior, calcular média e agora adicionei indice. A logica é comparar cada valor com cada valor e ver qual deles é o menor, ai você anota o indice desse valor que na verdade só é o número sequencial na ordem em que aparece o tal número não seria isso?

 

db51bct.gif

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...