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

Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл (объединение (union)) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать функцию распознающею первое целое число в строке http://www.cyberforum.ru/cpp-beginners/thread899345.html
Дан заголовок функции и описание входных выходных параметров. Их изменять нельзя. Необходимо реализовать эту функцию. Собственно сама функция. Реализовать и использовать функцию, которая...
C++ Совмещаем два байта Привет всем. У меня вопрос. Пишу CRC16(Modbus) для МК AVR, у которых однобайтовые регистры приема информации(т.е. передать я не могу 2 байта сразу). В Code::Blocks решил просимулировать... http://www.cyberforum.ru/cpp-beginners/thread899344.html
Ошибка при использовании Tooltip из примера с MSDN C++
Добрый день. Мне нужно сделать всплывающую подсказку для textBox. С++VS2008 WinForms. нашел это http://msdn.microsoft.com/ru-ru/library/system.windows.forms.tooltip.aspx Использовал пример //...
C++ Вызов перегруженной функции не могу понять в чем дело?
#include <iostream> #include <time.h> #include <stdio.h> using namespace std; //Прототипы функций bool LeapYear(int Year); //Определения высокосного года int restart(char answer); ...
C++ рекурсия http://www.cyberforum.ru/cpp-beginners/thread899320.html
здравствуйте! я начал изучать с++... дошел до функций (а именно рекурсии)... я понял, что рекурсия-это функция, которая сама себя вызывает.. так вот.. я решил написать примитивную программу для...
C++ Составить программу вычисления корней по итерационной формуле подробнее

Показать сообщение отдельно
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
12.06.2013, 12:42
это ты в своей тетрадке прочитал всё? А хоть один пример программы, где правильно употребляется union ты видел?
Нет, конечно, доля правды в твоей копипасте есть. Например про то, что объединение хранит данные в одном куске памяти. Но зачем это нужно в твоей программе? Ты же не ответил на вопрос, какую роль выполняет union в данном конкретном примере?
А я скажу какую.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    union tratata 
    {
        int l_m;
        char area[N];
    } tra;
///...
///...
 st[i].tra.l_m=st[i].place_number*0.05;
///...
       }
        else 
        {
            printf(" Укажите список районов по которым проезжает маршрутка\n");
            gets_s(st[i].tra.area,N-1);
}
в поле tra записывается либо строка, либо число. Причём обратно получить сохранённую строку будет почти невозможно, потому что в одних элементах массива эта строка затёрта числом, в других нет. В результате у тебя не массив, а полнейшая каша.
Короче говоря, то, что ты написал не может служить примером! Поищи нормальные примеры употребления union.

Вообще union употребляется относительно редко. По крайней мере реже, чем struct. Основное его применение сводится к выделению отдельных байтов из каких-нибудь переменных.
Например. Есть переменная int. Её размер 4 байта. Нужно вывести значения отдельных байтов этой переменной.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdio>
 
union test{
  unsigned char bytes[4];
  int x;
};
int main()
{
    union test item;
    item.x=-155;
    printf("%02x\n%02x\n%02x\n%02x\n", item.bytes[0],item.bytes[1],item.bytes[2],item.bytes[3]);
    return 0;
}
Здесь мы пользуемся тем, что все поля юниона наложены друг на друга. Мы записываем в одно из полей (х) значение целого четырёхбайтового числа, и в поле bytes[4] автоматом оказывается то же самое значение, только преобразованное к типу массива из 4х элементов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru