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