Переделать программу, чтобы функции возвращали значения - C (СИ)
Формулировка задачи:
Проект мультифайловый, помогите пожайлуста. Функции должны возвращать не printf,а значения
average.c
generate.c
main.c
people.h
#include "people.h"
void average(const People x[],const int size)
{
int sum=0,k=0;
int i;
for (i=0;i<size;i++)
{
if (!(x[i].pol)) /* если мужик */
{
sum+=x[i].rost; /* суммируем рост */
k++; /* считаем количество мужиков */
}
}
printf("The average height men: %d\n",(sum/k)); /* вывод среднего */
}#include "people.h"
void generate(People x[],const int size)
{
int i;
srand(time(NULL));
for (i=0;i<size;i++) /* рандомно заполняем пол и рост */
{
x[i].rost = 160+rand()%25; /* рандомный более-менее нормальный рост */
x[i].pol = rand()%2;
printf("#%3d Height: %hu | Gender: %10s\n",i+1,x[i].rost,x[i].pol ? "Woman" : "Man");
}
}#include "people.h"
void (*select[])()={generate,average}; /* массив указателей на функции */
int main(void)
{
People p[ALL]; /* массив структур с человеками */
(*select[0])(p,ALL); /*вызов 0 функции из массива указателей т.е. generate(p,ALL); */
(*select[1])(p,ALL); /*вызов 1 функции из массива указателей т.е. average(p,ALL); */
return 0;
}#ifndef PEOPLE_H
#define PEOPLE_H
#define ALL 22
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct /* структура на человека */
{
unsigned short pol;
unsigned short rost;
}People;
void average(const People x[],const int size); /* прототипы функций */
void generate(People x[],const int size);
#endifРешение задачи: «Переделать программу, чтобы функции возвращали значения»
textual
Листинг программы
#include "people.h"
#define ALL 22
int main(void)
{
int i=0,ykaz;
People p[ALL]; /* массив структур с человеками */
int (*Aver) (const, int);
Aver=average;
ykaz=(*Aver) (p,ALL);
generate(p,ALL); /*вызов 0 функции из массива указателей т.е. generate(p,ALL); */
for(i=0;i<ALL;i++)
printf("#%3d Height: %7hu | Gender: %10s\n",i+1,p[i].rost,p[i].pol ? "Woman" : "Man");
printf("The average height men: %d\n",ykaz); /* вывод среднего */
return 0;
}