Вычисление значения элемента структуры без прямого обращения - C (СИ)

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

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

Всем привет, прошу помощи!Задача такая. Необходимо написать функцию которая вычисляет значение элемента из структуры типа float Обычно мы можем использовать обращение -> или ".", в нашем случае нельзя. Есть ли какие либо альтернативы?Из очевидных инструментов используем побайтовое выравнивание.Остальное только через указатели и математику)Подскажите, пожалуйста, есть ли способы или дайте подсказку где узнать.
Листинг программы
  1. #include "stdafx.h"
  2. #include <locale.h>
  3. #include <string.h>
  4. #include <memory.h>
  5. #include <malloc.h>
  6. #include <conio.h>
  7. #pragma pack(push,1)//Выравниваем побайтовое хранение по 1
  8. struct Data
  9. {
  10. int numb;
  11. float numb_count;//элемент структуры который необходимо найти
  12. double numb_better;
  13. char symb[10];
  14. };
  15. #pragma pack(pop)
  16.  
  17. float Numb_count(Data *variable);//функция для вычисления значения float из структуры
  18. int _tmain(int argc, _TCHAR* argv[])
  19. {
  20. setlocale(LC_ALL, "rus");
  21. Data variable={3,3.5,3.555,{"HELLO"}};//Переменная структуры из которой необходимо найти float
  22. Data *P=(Data*)malloc(sizeof(Data));
  23. if(!P)
  24. {
  25. printf("Ошибка malloc\n");
  26. _getch();
  27. return 0;
  28. }
  29.  
  30. return 0;
  31. }
  32. float Numb_count(Data *variable)
  33. {
  34. float search_numb=0;
  35. ///Вот тут необходимо найти значения переменной из структуры DATA (3.5)
  36. //Data.numb_count или Data->numb_count использовать нельзя
  37. return search_numb;
  38. }

Решение задачи: «Вычисление значения элемента структуры без прямого обращения»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. struct Data
  4. {
  5.     int numb;
  6.     float numb_count;
  7.     double numb_better;
  8.     char symb[10];
  9. };
  10.  
  11. float Numb_count (struct Data *);
  12.  
  13. int main(void) {
  14.     struct Data var01 = {3, 3.5, 3.555, {"HELLO"}};
  15.     struct Data var02 = {4, 4.6, 5.678, {"hallo"}};
  16.  
  17.     printf("float var1: %f\n", Numb_count(&var01));
  18.     printf("float var2: %f\n", Numb_count(&var02));
  19.  
  20.     return 0;
  21. }
  22.  
  23. float Numb_count (struct Data *var) {
  24.     return *(float*)((char*)var + sizeof(int));
  25. }

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


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

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

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

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

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

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