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

dúvida relacionada a ponteiros e funções


Deufos

Pergunta

Olá, boa tarde. 

Estou com duvida sobre o porquê do meu código não rodar. Eu pesquisei na internet e aparentemente ele esta 100%, sem nenhum erro. 

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

void somatorioMedia(float *a, int n, float *somatorio, float *media);

int main(){
    int i;
    float a[10];
    int n = 10;
    float *somatorio;
    *somatorio = 0;
    float *media;
    *media = 0;

    for(i=0; i<10; i++){
        printf("n[%i]: ", i);
        scanf("%f", &a[i]);
    }
    somatorioMedia(a, n, somatorio, media);
    printf("Somatorio: %.2f\n", *somatorio);
    printf("Media: %.2f", *media);

    return 0;
}

void somatorioMedia(float *a, int n, float *somatorio, float *media){
    int i;
    for(i=0; i<n; i++){
        *somatorio += a[i];
    }
    *media = *somatorio / n;

}

 

Editado por Deufos
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

 

Quando você define uma variável do tipo float * está criando apenas um ponteiro, com um endereço qualquer, que pode ser um local inacessível ("Falha de segmentação."). Então você teria que alocar este ponteiro, usando a função malloc. Porém para o seu problema, Somatorio e media não precisam ser ponteiros. Basta que você passe o endereço delas para a função somatoriomedia() com o operador "&". Note que agora os ponteiros da função somatoriomedia já recebem endereços alocados.

 

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

void somatorioMedia(float *a, int n, float *somatorio, float *media);

int main(){
    int i;
    float a[10];
    int n = 10;
    float somatorio;
    float media;

    for(i=0; i<10; i++){
        printf("n[%i]: ", i);
        scanf("%f", &a[i]);
    }
    somatorioMedia(a, n, &somatorio, &media);
    printf("Somatorio: %.2f\n", somatorio);
    printf("Media: %.2f\n", media);

    return 0;
}

void somatorioMedia(float *a, int n, float *somatorio, float *media){
    int i;
    for(i=0; i<n; i++){
        *somatorio += a[i];
    }
    *media = *somatorio / n;

}

 

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...