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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Реализовать функцию распознающею первое целое число в строке http://www.cyberforum.ru/cpp-beginners/thread899345.html
Дан заголовок функции и описание входных выходных параметров. Их изменять нельзя. Необходимо реализовать эту функцию. Собственно сама функция. Реализовать и использовать функцию, которая распознает первое целое число в строке: int findInteger( const char str, char **end); Входные данные: str - исходная строка Выходные данные:
C++ Совмещаем два байта Привет всем. У меня вопрос. Пишу CRC16(Modbus) для МК AVR, у которых однобайтовые регистры приема информации(т.е. передать я не могу 2 байта сразу). В Code::Blocks решил просимулировать ситуацию, вроде всё верно, а результат не тот получаю... У меня имеет 2х байтовая переменная int16_t d и две однобайтовые переменные b и с, должен получить результат 1500, а получаю -36, когда меняю... 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 Использовал пример // Create the ToolTip and associate with the Form container. ToolTip^ toolTip1 = gcnew ToolTip; // Set up the delays for the ToolTip. toolTip1->AutoPopDelay = 5000; ...
C++ Вызов перегруженной функции не могу понять в чем дело?
#include <iostream> #include <time.h> #include <stdio.h> using namespace std; //Прототипы функций bool LeapYear(int Year); //Определения высокосного года int restart(char answer); //Перезапуск программы bool check(int Year,int Month, int Day); // Проверка на правильность и коректность вводимых данных int find(int Year,int Month, int Day); //Поиск дня недели
C++ рекурсия http://www.cyberforum.ru/cpp-beginners/thread899320.html
здравствуйте! я начал изучать с++... дошел до функций (а именно рекурсии)... я понял, что рекурсия-это функция, которая сама себя вызывает.. так вот.. я решил написать примитивную программу для вычисления факториала... #include <iostream> using namespace std; int fac(int a) { if (a==0){return 1;}else{return a*fac(a-1);} } int main() {
C++ Составить программу вычисления корней по итерационной формуле подробнее

Показать сообщение отдельно
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
12.06.2013, 12:42     Вычислить средний балл оценок каждого студента и напечатать их фамилии и средний балл (объединение (union))
это ты в своей тетрадке прочитал всё? А хоть один пример программы, где правильно употребляется 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х элементов.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru