Ir ao conteúdo
  • Cadastre-se

C Maior valor, média e valores acima da média com vetores


ningumx

Posts recomendados

Resolvi este exercício porém as saídas não estão corretas. Alguém sabe me dizer o que está errado?

O exercício: Faça um programa que lê 10 valores e os armazena em um vetor (float). Em seguida, mostre na tela: – O maior valor; – A média dos valores; – Quais valores estão acima da média.

#include <stdio.h>

int main() {
    float v[10];
    int i;
    for(i = 0 ; i < 10 ; i++){
        printf("Digite o %d° valor: ",i+1);
        scanf("%f",&v[i]);
    }
    int maior = v[i]; 
    for(i = 0 ; i < 10 ; i++){
        if(v[i] > maior)
            maior = v[i];
    }
    
    int soma = 0;
    for(i = 0 ; i < 10 ; i++){
        soma = soma + v[i];
    }
    float media = soma / 10;
    
    printf("O maior valor eh: %d.\n",maior);
    printf("A media dos valores eh: %.2f.\n",media);
    
    printf("Valores maiores que a media: \n");
    for(i = 0 ; i < 10 ; i++){
        if(v[i] > media)
            printf("%d\n",v[i]);
    }
    
    return 0;
}

 

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

5 minutos atrás, devair1010 disse:

@ningumx       com certeza seu   "int maior = v[i];"  esta fora de faixa , pois depois do loop  ,  i foi incrementado e passou  a valer 10 , e nesse seu vetor não existe  uma posicao  10 , mas apenas de zero até nove .

como posso resolver isso?

Fiz algumas modificações mas a média ainda não dá o valor correto. Se colocar os valores de 1 a 10, a média, que é para dar 5.5, está dando 5.0.

#include <stdio.h>
#include <stdlib.h>

int main() {
    float v[10];
    int i;
    for(i = 0 ; i < 10 ; i++){
        printf("Digite o %d° valor: ",i+1);
        scanf("%f",&v[i]);
    }
    int maior = v[0];
    int i_maior = 0;
    for(i = 0 ; i < 10 ; i++){
        if(v[i] > maior){
            maior = v[i];
            i_maior = i;
        }
    }
    
    int soma = 0;
    for(i = 0 ; i < 10 ; i++){
        soma = soma + v[i];
    }
    float media = soma / 10;
    
    printf("O maior valor eh: %d.\n",maior);
    printf("A media dos valores eh: %.2f.\n",media);
    
    printf("Valores maiores que a media: \n");
    int acima[10];
    for(i = 0 ; i < 10 ; i++){
        if(v[i] > media){
            acima[i] = v[i];
            printf("%d\n",acima[i]);
        }
    }
    
    return 0;
}

 

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

@ningumx    seu vetor é de float , e o compilador converte de float para int ao adicionar o valor float na variável do tipo int ,

essa parte das casas decimais pode ser feita com um "cast" 


    int soma = 0;
    for(i = 0 ; i < 10 ; i++){
        soma = soma + v[i];
    }
    float media = (float)soma / 10;

 

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

@ningumx Bom dia!

 

Notei que maioria das falhas são de especificadores, tipos de dados e atribuir entre tipos diferentes.

 

C'11 - gcc'11.4

#include <stdio.h>
int main() {
    float v[10];
    int i;
    for (i= 0 ; i<10 ; i++) {
        printf ("%c%s%d%s",'\r',"Digite o ",i+ 1,"° valor: ");
        int c= scanf ("%f",&v[i]);
        if (c== EOF) {
          perror ("Falha na leitura");
          return 1;
          }
        if (c!=1) --i;  
        while ('\n'!=(c= getchar ()) && EOF!=c); 
        }
    int maior= 0; 
    for (i= 0 ; i<10 ; i++) {
        if (v[i]>v[maior])
            maior= i;
        }
    float soma= 0;
    for (i= 0 ; i<10 ; i++) {
        soma= soma+ v[i];
        }
    float media= soma/ 10;
    
    printf ("O maior valor eh: %.2f.\n",v[maior]);
    printf ("A media dos valores eh: %.2f.\n",media);
    
    printf ("Valores maiores que a media: \n");
    for (i= 0 ; i<10 ; i++) {
        if (v[i]>media)
            printf ("%.2f\n",v[i]);
            }  
    return 0;
    }

 

Sugestão: dê-se a oportunidade de aprender mais com o compilador, ative todos os alertas (todos, inclusive os pedantes).

 

Dica: utilize gcc'11 e chame-o com estas opções

Citação

-std=c11 -Wall -Wextra -Wfatal-errors -pedantic -pedantic-errors -fanalyzer

 

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!