Динамический массив через realloc - ошибка преобразования типов - C (СИ)
Формулировка задачи:
Здравствуйте !
я начинающий программист. подскажите пожалуйста кто может
пишу в с-шном файле где забиты отдельные функции.
функцию которая в массиве чисел считает сумму . среднее арифметическое , максимум и минимум и забивает их в динамический массив через realloc.
компилятор ругается в сторону realloc типа не могу преобразовать void в int. если убрать realloc и free то всё нормально, но мне надо понять именно как забить это в динамический массив.
int sum(int *p, int n)
{
int i,s, sr, max, min, *pm, b[N];
s=0; sr=0; max=0; min=100;
pm=realloc(b,N*sizeof(int));
for (i=0;i<n;i++)
{
s+=*(p+i);
max=max<*(p+i)?*(p+i):max;
min=min>*(p+i)?*(p+i):min;
}
sr=s/n;
b[0]=s; b[1]=sr; b[2]=max; b[3]=min;
printf("\n Сумма чисел равна %d, среднее арифметическое - %d, \nмаксимальное число - %d, минимальное число %d", b[0], b[1], b[2], b[3]);
free(pm);
return s;
}Решение задачи: «Динамический массив через realloc - ошибка преобразования типов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
#include <time.h>
#include "mass.h"
#define color(color) {SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),color);}
int main()
{
setlocale(0,"");
int n, *mp;
puts("Ââåäèòå êîëè÷åñòâî ÷èñåë");
scanf("%2d",&n);
fflush(stdin);
int a[n];
srand(time(0));
massiv(a,n);
printm(a,n);
sum(a,n);
getch();
}
Хеддер:
#ifndef MASS_H
#define MASS_H
void massiv(int*,int);
void printm(int*,int);
int sum(int*,int);
#endif
с-шник с функциями
#include "mass.h"
#include <windows.h>
#include <stdio.h>
#define N 14
void massiv(int *p,int n)
{
int i;
for (i=0;i<n;i++)
{
*(p+i)=rand()%100;
}
}
void printm(int *p, int n)
{
int i;
for (i=0;i<n;i++)
{
printf("% 2d",*(p+i));
}
}
int sum(int *p, int n)
{
int i,s, sr, max, min, *pm, b[N];
s=0; sr=0; max=0; min=100;
pm=realloc(b,N*sizeof(int));
for (i=0;i<n;i++)
{
s+=*(p+i);
max=max<*(p+i)?*(p+i):max;
min=min>*(p+i)?*(p+i):min;
}
sr=s/n;
b[0]=s; b[1]=sr; b[2]=max; b[3]=min;
printf("\n ÑóììГ* Г·ГЁГ±ГҐГ« Г°Г*ГўГ*Г* %d, ñðåäГ*ГҐГҐ Г*ðèôìåòè÷åñêîå - %d, \nГ¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îå ÷èñëî - %d, ìèГ*ГЁГ¬Г*ëüГ*îå ÷èñëî %d", b[0], b[1], b[2], b[3]);
free(pm);
return s;
}