/*
Cоздать объединение, что содержит элементы типов char, int, short, fload, long, string.
создать массив элементов типа объединения и заполнить элементы данного массива случайными значениями
за таким условием: элементы массива 0,3,6,9 должны содержать элементы первого типа, 1,4,7,10 другого, 2,5,8,11 третьего и вычислить суму элементов каждого типа.
*/
/*
codeby.net
Autor: DarkKnight125
*/
#include <iostream>
#include <time.h>
using namespace std;
//Наше объединение
union Un
{
char uchar;
int uint;
short ushort;
float ufloat;
long ulong;
char ustring[12];
};
void main(void)
{
setlocale(LC_ALL,".1251"); //Установим локаль
Un Arr[12]; //Наш массив
srand(time(NULL)); //Инициализируем генератор случ. величины
//Обнулим память выделенную под массив
for (int i = 0; i<12; i++)
{
memset(&Arr[i],0,sizeof(Un));
}
for (int i = 0; i<12; i+=3)
{
//элементы массива 0,3,6,9 должны содержать элементы первого типа
Arr[i].uchar = (char)rand()%256; //заполним char
//1,4,7,10 другого (второго)
Arr[i+1].uint = (int) rand(); //Заполним Int
//2,5,8,11 третьего
Arr[i+2].ushort = (short) rand();
}
long SumChar = 0; //Сумма для char
long SumInt = 0; //Сумма для int
long SumShort = 0; //Сумма для short
float SumFloat = 0.0; //Сумма для float
long SumLong = 0; //Сумма для long
char SumString[120] = {0}; //Строка (ее мы кстати будем объединять)
for (int i =0; i<12; i++) //Обойдем весь массив
{
//Ну и суммируем все это дело
SumChar += Arr[i].uchar;
SumInt += Arr[i].uint;
SumShort += Arr[i].ushort;
SumFloat += Arr[i].ufloat;
SumLong += Arr[i].ulong;
strcat(SumString,Arr[i].ustring);
}
cout<<"Результат : " << endl;
cout<<"Сумма [char] : "<< SumChar << endl;
cout<<"Сумма [int] : "<< SumInt << endl;
cout<<"Сумма [short] : "<< SumShort << endl;
cout<<"Сумма [float] : "<< SumFloat << endl;
cout<<"Сумма [long] : "<< SumLong << endl;
cout<<"Сумма [char*] : "<< SumString << endl;
}