Функция как член структуры - C (СИ) (75338)

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

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

Нужно сделать функцию-член структуры, которая считает значения переменных, входящих в эту структуру. Вот что я имею:
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(void)
  4. {
  5. struct numbers {
  6. int x;
  7. int y;
  8. int SumNum (struct numbers mystruct) {
  9. return (mystruct.x+mystruct.y);
  10. };
  11. }massnum[5];
  12. FILE *fp;
  13. int i;
  14. //чтение
  15. if ((fp = fopen("numbers.txt", "rb")) == NULL) {
  16. printf("Ошибка при открытии файла!");
  17. return 0;
  18. }
  19. for (i = 0; i<5; ++i) {
  20. if (fread(&massnum[i], sizeof(struct numbers), 1, fp) != 1) {
  21. if (feof(fp)) break;
  22. printf("Ошибка при чтении файла!");
  23. }
  24. }
  25. fclose(fp);
  26. printf("%d", massnum[2].SumNum(massnum));
  27. return 0;
  28. }
Если имеются идеи или разобраные похожие предметы - поделитесь.

Решение задачи: «Функция как член структуры»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. struct point {
  4.     int x, y;
  5.     void (*println)(struct point*);
  6. };
  7.  
  8. void println_point(struct point* p){
  9.     printf("[%d, %d]\n", p->x, p->y);
  10. }
  11.  
  12. int main() {
  13.     struct point p1 = { 10, 20, &println_point };
  14.     p1.println(&p1);
  15.  
  16.     return 0;
  17. }

Объяснение кода листинга программы

  1. Включаем заголовочный файл stdio.h для использования функций вывода
  2. Создаем структуру point с полями x и y типа int и указателем на функцию void (println)(struct point)
  3. Определяем функцию println_point которая принимает указатель на структуру point и выводит значения полей x и y через printf
  4. Создаем переменную p1 типа struct point с полями равными 10 и 20 и указателем на функцию println_point
  5. Вызываем функцию println_point передавая в качестве аргумента адрес переменной p1
  6. Завершаем программу и возвращаем 0

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


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

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

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

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

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

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