Найти общее число учащихся школ - C (СИ)

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

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

Известны данные о количестве учащихся в каждом из 15 учебных заведений и о типе этого заведения (школа, техникум или училище). Найти общее число учащихся школ. Количество задается рандомно.
Очень нужно сделать с указателем на функцию.

Решение задачи: «Найти общее число учащихся школ»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ALL 15 /* количество заведений */
typedef struct /* структура на заведение */
{
    unsigned short count; /* число учащихся */
    unsigned char type; /* переменная под тип заведения */
}Pls;
 
void average(const Pls x[],const int size); /* прототипы функций */
void generate(Pls x[],const int size);
 
void (*select[])()={generate,average}; /* массив указателей на функции */
char * type[3]={"Shkola","Technikum","Ucilishe"};
int main(void)
{
    Pls p[ALL];  /* массив структур с учебными заведениями */
    (*select[0])(p,ALL); /*вызов 0 функции из массива указателей т.е. generate(p,ALL); */
    (*select[1])(p,ALL); /*вызов 1 функции из массива указателей т.е. average(p,ALL); */
    return 0;
}
 
void generate(Pls x[],const int size)
{
    int i;
    srand(time(NULL));
    for (i=0;i<size;i++) /* рандомно заполняем тип и количество */
    {
        x[i].type = rand()%3; /* рандомный тип заведения */
        x[i].count = 300+rand()%300; /* рандомное число учащихся */
        printf("#%3d Zavedeni: %s Kol-vo: %hu\n",i+1,  type[x[i].type],x[i].count);
    }
}
 
void average(const Pls x[],const int size)
{
    int sum=0,k=0;
    int i;
    for (i=0;i<size;i++)
    {
        if (!(x[i].type)) /* если школа */
        {
            sum+=x[i].count; /* суммируем учащихся */
            k++;  /* считаем количество школьников */
        }
    }
    puts("-----------------------------------");
    printf("Shkolnikov: %d\n",(sum)); /* вывод количества школьников */
    puts("-----------------------------------");
}

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


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

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

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