Ir ao conteúdo
  • Cadastre-se

C# Escrever um programa que receba 15 números e mostre a media dos primos no vetor


Posts recomendados

Galera me da uma ajuda, eu não to conseguindo/não sabendo colocar a condição pra pegar os primos e fazer a média, até agora fiz isso aqui de começo:

#include<stdio.h>
#include<math.h>
#include <locale.h>

int main ()
{
	setlocale(LC_ALL, "");
	
    int v[15], i, contap, conta, aux, y, x;

    contap = 0;

    
    printf("Entre com os números para os vetores:");
    for (i=0; i < 15; i++)
        scanf ("%d", &v[i]);
    
    
    for (i = 0; i < 15; i++)
    {
            aux = v[i];
            conta = 0;

            for(y = 1; y <= aux; y++)
            {

                x = aux % y;

                if(x==0) 
                    conta = conta + 1;
            }

            if( conta == 2) 
                contap = contap + 1;

    }
    printf ("O total de números primos no vetor é: %d", contap);
    
}


 

Link para o post
Compartilhar em outros sites
  • ReynaD alterou o título para Escrever um programa que receba 15 números e mostre a media dos primos no vetor
Citação

Escrever um programa que receba 15 números e mostre a media dos primos no vetor

 

Escreva sempre em torno dos dados...

 

O programa é seu, não depende de nada. Então pode escrever como quiser...

 

Imagine essa função:
 

    int		valor_se_primo( int N );  // retorna N se N primo, ou zero

 

E o seu vetor de 15 números
 

    int    vetor[15];

 

Então se você chamar sua função para todos os elementos do vetor e dividir por 15 vai ter o que? A média. Só isso. 

 

#include <stdio.h>

int		valor_se_primo( int N );  // retorna N se N primo, ou zero

int main(void)
{
    int     soma = 0;
    int     vetor[15] = {0};

    for ( int i=0; i<15; i+=1 ) soma = soma + valor_se_primo( vetor[i] );
    printf("Media dos primos = %8.2f\n", soma/15. );
    return 0;
};

int		valor_se_primo( int N )
{
    return 0;
};  

 

Não é? Basta "preencher os espaços"

  • Curtir 1
Link para o post
Compartilhar em outros sites

@arfneto A soma não deveria ser dividida pela quantidade de números primos, ao invés da quantidade total do vetor?

 

Por exemplo, um vetor de 15 posições, porém com 3 números primos. A soma não deveria ser dividida por 3?

Link para o post
Compartilhar em outros sites
1 hora atrás, AdrianoSiqueira disse:

@arfneto A soma não deveria ser dividida pela quantidade de números primos, ao invés da quantidade total do vetor?

 

Por exemplo, um vetor de 15 posições, porém com 3 números primos. A soma não deveria ser dividida por 3?

 

Pois é... Não deveria. 

 

Entenda que ZERO é o elemento neutro da adição. É claro que você vai ter que chamar a função para todo número do vetor, porque só assim vai saber se o número é primo. Então é mais esperto retornar zero quando não for primo ---  e somar sempre --- do que retornar sim ou não para DEPOIS testar o que já sabia e não somar...

 

    int		valor_se_primo( int N );  // retorna N se N primo, ou zero

 

Escrevendo em torno dos dados você economiza ciclos e ciclos de CPU. Se nenhum valor for primo você vai somar 15 zero e a média continua, bem, zero.

 

    int		retorna_um_se_primo( int N );  // retorna 1 se N primo

 

Acho que já entendeu, mas compare com o trivial, que seria usar a função acima, retornando 1 se N primo e veja o que aconece com o programa:

 

int main(void)
{
    int     n_primos = 0;
    int     soma = 0;
    int     vetor[15] = {0};

    for ( int i=0; i<15; i+=1 )
    {
        if ( retorna_um_se_primo( vetor[i] ) )
        {
            soma += vetor[i];
            n_primos += 1;
        };
    };  // for()
    printf("Media dos primos = %8.2f\n", soma/n_primos );
    return 0;
};

 

Você precisa contar os primos, coisa que não precisava fazer no primeiro programa, e vai precisar de outra variável. E precisa acessar vetor[i] DUAS vezes ao invés de uma, então vai ter que calcular de novo o deslocamento e pegar o endereço que você já tinha.

 

  • Curtir 1
  • Obrigado 1
Link para o post
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...

Aprenda a ler resistores e capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!