Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida C++...Exercício!!


Felipe Shibuya

Pergunta

Peguei uma lista exercício de C++ de um site de uma universidade e estou tentando fazer. O programa roda, mas o resultado não é o esperado.

---------------------------------

EXERCÍCIO: Dado o vetor a, com n elementos reais. Determine e escreva a média aritmética dos elementos positivos do vetor.

--------------------------------- (Obrigado !!)

#include <iostream>

using namespace std;

void le_vetorA(float vetorA[], int n)
{
    cout<<"Valores do vetor: ";
    for (int i=0; i<n; i++)
    {
        cin>>vetorA;
    }
}

                float media_vetorA(float vetorA[], int n, int q)
                {
                    float soma=0;
                    for (int i=0; i<n; i++)
                    {
                        if (vetorA>0)
                        {
                            soma=soma+vetorA;
                            q=q+1;
                        }
                    soma=soma/q;
                    }
                    return soma;
                }

int main()
{
int n, i ,q;
float vetorA[9999], soma;
cout<<"Tamanho do vetor: ";
cin>>n;
le_vetorA(vetorA, n);
soma=media_vetorA(vetorA, n, q);
cout<<"Media aritmetica dos positivos: "<<soma<<endl;
return 0;
}

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Muito obrigado pelas boas vindas!!

Quando eu copiei do CodeBlocks ele apagou os " [ i ] "... Desculpa por não ter revisado antes de postar.

#include <iostream>

using namespace std;

void le_vetorA(float vetorA[], int n)
{
    cout<<"Valores do vetor: ";
    for (int i=0; i<n; i++)
    {
        cin>>vetorA[i];
    }
}

                float media_vetorA(float vetorA[], int n, int q)
                {
                    float soma=0;
                    for (int i=0; i<n; i++)
                    {
                        if (vetorA[i]>0)
                        {
                            soma=soma+vetorA[i];
                            q=q+1;
                        }
                    soma=soma/q;
                    }
                    return soma;
                }

int main()
{
int n, i ,q;
float vetorA[9999], soma;
cout<<"Tamanho do vetor: ";
cin>>n;
le_vetorA(vetorA, n);
soma=media_vetorA(vetorA, n, q);
cout<<"Media aritmetica dos positivos: "<<soma<<endl;
return 0;
}

 

Editado por Felipe Shibuya
Organizado...
Link para o comentário
Compartilhar em outros sites

  • 0

Fiz algumas mudanças no seu código.
 

#include <iostream>
using namespace std;


float media_vetorA ( float v[], int n) {
    float somatoria = 0;
    int npositivos = 0;
    for ( int i = 0; i < n; i++ ) {
        if ( v[i] > 0 ) {
            somatoria = somatoria + v[i];
            npositivos++;
        }
        
    }
    
    somatoria = somatoria / npositivos;
    
    return somatoria;
}

int main() {
    float vetor[] = {80, 30, 40, 50};
    int n = sizeof(vetor)/sizeof(float); 
    float soma = 0;
    
    soma = media_vetorA ( vetor, n );

    cout << "Media aritmetica dos positivos: " << soma << endl;
    return 0;
}

Procure usar sempre um array predefinido antes de sair pedindo valores por teclado, isso lhe ajudará na hora de testar o programa com maior rapidez, pois é chato ficar preenchendo números por enquanto seu programa não arroja os resultados esperados, melhor você entrega uns dados já preenchidos para ele mastigar e assim você se ocupa somente da parte lógica(Sem perda de tempo). já comentei isso aqui: https://www.scriptbrasil.com.br/forum/topic/186902-duvida/

Se o que você precisa é a media dos números pares somente precisa passar o vetor e seu tamanho. A divisão deve ser feita fora dos laços, depois de haver feito a soma.

Espero ter ajudado. Agora tente adapta-lo ao seu problema(Pedir dados por teclado).

 

Link para o comentário
Compartilhar em outros sites

  • 0
5 horas atrás, vangodp disse:

Fiz algumas mudanças no seu código.
 


#include <iostream>
using namespace std;


float media_vetorA ( float v[], int n) {
    float somatoria = 0;
    int npositivos = 0;
    for ( int i = 0; i < n; i++ ) {
        if ( v[i] > 0 ) {
            somatoria = somatoria + v[i];
            npositivos++;
        }
        
    }
    
    somatoria = somatoria / npositivos;
    
    return somatoria;
}

int main() {
    float vetor[] = {80, 30, 40, 50};
    int n = sizeof(vetor)/sizeof(float); 
    float soma = 0;
    
    soma = media_vetorA ( vetor, n );

    cout << "Media aritmetica dos positivos: " << soma << endl;
    return 0;
}

Procure usar sempre um array predefinido antes de sair pedindo valores por teclado, isso lhe ajudará na hora de testar o programa com maior rapidez, pois é chato ficar preenchendo números por enquanto seu programa não arroja os resultados esperados, melhor você entrega uns dados já preenchidos para ele mastigar e assim você se ocupa somente da parte lógica(Sem perda de tempo). já comentei isso aqui: https://www.scriptbrasil.com.br/forum/topic/186902-duvida/

Se o que você precisa é a media dos números pares somente precisa passar o vetor e seu tamanho. A divisão deve ser feita fora dos laços, depois de haver feito a soma.

Espero ter ajudado. Agora tente adapta-lo ao seu problema(Pedir dados por teclado).

 

 

Muito obrigado amigo... Vou seguir suas dicas!!
Esclareceu o meu problema =)

Muito obrigado amigo... Vou seguir suas dicas!!
Esclareceu o meu problema =)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...