Ir ao conteúdo
  • Cadastre-se
David Jordão

Utilizando alocamento Duvida (malloc)

Recommended Posts

Alguem sabe me dizer o que estou fazendo de errado no codigo ? não consigo compilar de maneira nenhuma.
relevem minha burrice se o erro for básico haha, estou começando a aprender agora.

 

#include<stdlib.h>
#include <stdio.h>
 
float *v; 
float med;
int i,n;
float media(int alunos, float total);
 
int main (void)
{
printf("Entre com o numero de alunos >>");
scanf("%d",&n);
v = (float *)malloc(n*sizeof(float)); 
if(v == NULL) 
{
printf("memoria cheia\n");
exit(1);
}
for (i=0;i<n;i++)
{
prinft("\n entre com a nota %d",i+1);
scanf("%f",&v);
}
med = media(n,v); // COMPILADOR ACUSA ERRO NESTA LINHA 
printf("a media das notas>> %s", med);
free(v);
return 0;
}
 
float media(int alunos, float total)
{
float resultado,parcial;
for (i=0;i<alunos ;i++)
{
parcial = parcial + total;
}
resultado = parcial/alunos;
return resultado;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dica: "Compilador acusa erro nessa linha" sem dizer o erro não informa nada.

Compiladores devolvem texto quando há erro de compilação.

 

O problema é que o argumento da função é do tipo float, mas você passa um float * (ponteiro p/ float). Outro detalhe: as variáveis pertencem ao escopo do arquivo (vulgo "global"). Não é necessário passá-las como argumento porque elas estão disponíveis para todos os blocos dentro do arquivo.

 

Outra coisa: a função retorna float e você imprime com %s...

#include <stdio.h>#include <errno.h>#include <string.h>#include <stdlib.h> float calcular_media(float * notas, int alunos); int main (void) {   int numero_alunos;   printf("Informe o numero de alunos: ");   scanf("%d%*c", &numero_alunos);    float * notas = (float *) malloc(numero_alunos * sizeof float);    if (!notas) {       printf("%s\n", strerror(errno)); /* http://linux.die.net/man/3/malloc */       return errno;   }    for (int i = 0; i < n ; i++)  {      prinft("Informe a nota %d", i+1);      scanf("%f%*c",&notas[i]);   }   float media = calcular_media(notas, numero_alunos);   printf("A mèdia das notas é %.2f", media);   free(notas);   return 0;} float calcular_media(float * notas, int alunos) {   float soma = 0.0;   for (int i = 0 ; i < alunos ; i++) {       soma += notas[i];   }   return notas/alunos;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×