Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Damir_18
Заблокирован
#1

Тема: Объединения - C++

10.04.2012, 16:39. Просмотров 609. Ответов 4
Метки нет (Все метки)

Здравствуйте всем))) Тут задачка лично для меня не очень то и понятнааая)) может кто то помочь?? Условие: Написать программу хранения координаты точки в виде объединений внутри структуры для целочисленного и вещественного типов данных (по обьяснению учителя координаты брать как очки обычные например А(х,у)) Заранее спасибоо)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2012, 16:39     Тема: Объединения
Посмотрите здесь:

C++ Структуры и объединения
C++ Объединения (union)
Cтруктуры. Перечисления. Объединения C++
объединения, онли теория C++
C++ Ошибка объединения строк
Union - Объединения C++
Объединения C++
C++ задачка на объединения
Объединения объектов классов C++
Тип объединения union C++
Структуры и объединения C++
C++ Объединения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
10.04.2012, 16:56     Тема: Объединения #2
Я тоже не понял при чём тут объединение
Ну разве что
C
1
2
3
4
5
6
7
8
union coord{
  int i;
  float f;
};
struct point{
  union coord x;
  union coord y;
};
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
10.04.2012, 17:26     Тема: Объединения #3
Kuzia domovenok, ну так ведь будут глюки:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
 
union coord
{
  int i;
  float f;
};
 
struct point
{
  union coord x;
  union coord y;
};
 
int main()
{
   
   struct point point1;
   
   point1.x.i = 6;
   point1.y.i = 12;
   
   printf( "point1 (pure int):\n\tAS INT: %d %d\n\tAS FLOAT: %f %f\n",
           point1.x.i, point1.y.i,
           point1.x.f, point1.y.f );
   
   struct point point2;
   
   point2.x.f = 16.0;
   point2.y.f = 8.0;
              
   printf( "point2 (pure float):\n\tAS INT: %d %d\n\tAS FLOAT: %f %f\n",
           point2.x.i, point2.y.i,
           point2.x.f, point2.y.f );
 
   return 0;
}
http://liveworkspace.org/code/f3c9d2...3c93bae4687c58

В первом примере float-представление int равно нулю (очень подозреваю, что это из-за того, что биты экспоненты равны нулю). Зато во втором примере int-представление float сходит с ума (ещё бы!).

Мораль сей басни такова: всегда уточняйте задание.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
10.04.2012, 17:51     Тема: Объединения #4
talis, Ну я к этому и стремился.
Ну я так понял, что задание и не предполагает, что надо float побитно преобразовывать в int.
Просто в одной четырёхбайтовой переменной(или сколько там у него занимают инт и флоат)
Так вот просто в одной четырёхбайтовой переменной нужно хранить либо int либо float в зависимости от ситуации,

Так сказать четыре байта сэкономить, чтоб не выделять float переменную, когда int используется
Другого объяснения я не вижу для использования объединений.
Damir_18
Заблокирован
11.04.2012, 10:52  [ТС]     Тема: Объединения #5
Да я и сам не понял задачу) Сегодня я спрошу что именно надо найти в этих объединениях) и после этого я отвечу) спасибо за попытки и за решенные задачи) ну она вроде мне подсказла что типа я ввожу координаты х и у) и прост их вывожу на экран и все вроде) сегодня надо это уточниить))
Yandex
Объявления
11.04.2012, 10:52     Тема: Объединения
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru