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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #define ALL 15 /* количество заведений */
  5. typedef struct /* структура на заведение */
  6. {
  7.     unsigned short count; /* число учащихся */
  8.     unsigned char type; /* переменная под тип заведения */
  9. }Pls;
  10.  
  11. void average(const Pls x[],const int size); /* прототипы функций */
  12. void generate(Pls x[],const int size);
  13.  
  14. void (*select[])()={generate,average}; /* массив указателей на функции */
  15. char * type[3]={"Shkola","Technikum","Ucilishe"};
  16. int main(void)
  17. {
  18.     Pls p[ALL];  /* массив структур с учебными заведениями */
  19.     (*select[0])(p,ALL); /*вызов 0 функции из массива указателей т.е. generate(p,ALL); */
  20.     (*select[1])(p,ALL); /*вызов 1 функции из массива указателей т.е. average(p,ALL); */
  21.     return 0;
  22. }
  23.  
  24. void generate(Pls x[],const int size)
  25. {
  26.     int i;
  27.     srand(time(NULL));
  28.     for (i=0;i<size;i++) /* рандомно заполняем тип и количество */
  29.     {
  30.         x[i].type = rand()%3; /* рандомный тип заведения */
  31.         x[i].count = 300+rand()%300; /* рандомное число учащихся */
  32.         printf("#%3d Zavedeni: %s Kol-vo: %hu\n",i+1,  type[x[i].type],x[i].count);
  33.     }
  34. }
  35.  
  36. void average(const Pls x[],const int size)
  37. {
  38.     int sum=0,k=0;
  39.     int i;
  40.     for (i=0;i<size;i++)
  41.     {
  42.         if (!(x[i].type)) /* если школа */
  43.         {
  44.             sum+=x[i].count; /* суммируем учащихся */
  45.             k++;  /* считаем количество школьников */
  46.         }
  47.     }
  48.     puts("-----------------------------------");
  49.     printf("Shkolnikov: %d\n",(sum)); /* вывод количества школьников */
  50.     puts("-----------------------------------");
  51. }

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


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

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

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы