Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2010, 17:05   #1
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
Вопрос Работа с Юнион

создал юнион в которм задал некоторые типы данных. потом создал масив типа юнион который заполнил так 0, 3, 6, 9 это элементы первого типа
1, 4, 7, 10 второго, и 2, 5, 8, 11 третьего.
далее мне нужно просумировать отдельно каждий тип данных . вот тут и ошибка(( при попытке ссумировать вылетает такое
Цитата:
error C2440: приведение типов: невозможно преобразовать 'un' в 'char'
и ещо когда пытаюсь вывести на экран мой масив то Вижуал пишет
Цитата:
бинарный '<<': не найден оператор, принимающий правый операнд типа 'un' (или приемлемое преобразование отсутствует)
и ещо много непонятного текста к этой ошибке
как сделать правильно?
вот код проги
Код:
#define m 12
union un
{
	char Ch;
	int In;
	short Sh;
	float Fl;
	long Lg;
	char Str[20];

} ;

void Func (un*mass)
{
	char SumCCh= 0;
	int SumCIn= 0;
	short SumCSh= 0;

	srand((unsigned) time(NULL));
	
	for (int i=0; i<m ;i++ )
	{
		mass[i].Ch= 1+rand()%255;
		SumCCh +=(char)mass[i];

		i++;
		mass[i].In= rand()%20;
		i++;
		mass[i].Sh= rand()%20;
	}
	for(int i=0; i<0;i++)
	{
		cout<<mass[i]<<" ";
	}
	
}
mansp вне форума Ответить с цитированием
Старый 04.12.2010, 17:25   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
cout<<mass[i].Ch<<" ";
И, думаю,
Код:
SumCCh +=(char)mass[i].Ch;
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 04.12.2010, 21:40   #3
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

Цитата:
out<<mass[i].Ch<<" ";
но ведь у меня там не только чар но и шорт с интом(( как быть?
mansp вне форума Ответить с цитированием
Старый 04.12.2010, 21:46   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а вы помните что такое union?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.12.2010, 23:46   #5
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

это тип данных который содержит разные типы данных, и имеет размер наиболшего с типов,
mansp вне форума Ответить с цитированием
Старый 04.12.2010, 23:52   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

то есть в итоге одну и ту же область памяти вы можете применять по разному.

то есть нужно выбрать один тип из вашего списка и работайте с ним, зачем вы мешаете масло с солью и добавляете сахар?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.12.2010, 00:23   #7
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

как вывести праваильно на экран я понял кажися))

Последний раз редактировалось mansp; 05.12.2010 в 00:49.
mansp вне форума Ответить с цитированием
Старый 05.12.2010, 07:25   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
это тип данных который содержит разные типы данных, и имеет размер наиболшего с типов,
Правильно, только этот эффект достигается не какой-то особой магией union'ов, а тем фактом, что корректно в каждый момент времени можно использовать один и только один из его членов, т.к. все они хранятся в одной и той же области памяти.
Вот есть у нас стул, и на этом стуле в принципе могут сидеть пять сотрудников, а также стоять кактус в горшке или системник от офисного компа. Если вы посадили на стул сотрудника, то не пытайтесь потом взять с этого стула кактус - этот сотрудник нагло и цинично спихнул кактус со стула когда садился.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00