Переделать программу, чтобы функции возвращали значения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Проект мультифайловый, помогите пожайлуста. Функции должны возвращать не printf,а значения average.c
#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)); /* вывод среднего */
}
generate.c
#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");
    }
}
main.c
#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;
}
people.h
#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;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5
Похожие ответы