Почему моя средняя арифметическая функция всегда возвращает 0? - PullRequest
0 голосов
/ 20 октября 2018

В приведенном ниже коде функция calculo() не возвращает никаких значений.Он должен был вернуть среднее арифметическое между cont и aluno переменными, но он всегда возвращает 0.

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

int i;

int calculo(int alunos, int *p) {
    int cont = 0;
    for (i = 0; i < alunos; i++)
        cont += p[i];
    return cont / alunos;
}

int main()
{
    int *p, alunos, media;

    printf("Digite a quantidade de alunos na turma \n");
    scanf("%d", &alunos);

    p = (int*)calloc(alunos, sizeof(int));

    if (p == NULL) {
        printf("Memória Insuficiente");
        return 1;
    }
    srand(time(NULL));
    for (i = 1; i < alunos + 1; i++) {
        *p = rand() % 10;
        printf("Nota do Aluno [%d]: \t %d \n", i, *p);
    }

    media = calculo(alunos, p);
    printf("A Media Aritimetica da turma e:\t %d", media);
    getche();
    free(p);
    return 0;
}

Что я делаю не так?

1 Ответ

0 голосов
/ 21 октября 2018
srand(time(NULL));
for (i = 1; i < alunos + 1; i++) {
    *p = rand() % 10;  // <<=========================== here
    printf("Nota do Aluno [%d]: \t %d \n", i, *p);
}

вы присваиваете *p aka p[0] снова и снова.Что вы, вероятно, хотите сделать, это

srand(time(NULL));
for (i = 0; i < alunos; ++i) {
    p[i] = rand() % 10;
    printf("Nota do Aluno [%d]: \t %d \n", i + 1, p[i]);
}
...