Ir ao conteúdo

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


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

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;
  
  

 

Postado

@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.

Postado
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],...

Postado

@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...

Postado
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
  • Solução
Postado

@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
Postado

@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
Postado
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
Postado
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
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!