Найти общее число учащихся школ - 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("-----------------------------------"); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д