Задача: объединения разных типов с разной байтностью

  • Автор темы kaffein
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

kaffein

#1
всем доброго времени суток!
мне нужно создать объединение, что содержит элементы типов char, int, short, fload, long, string.
создать массив элементов типа объединения и заполнить элементы данного массива случайными значениями за таким условием: элементы массива 0,3,6,9 должны содержать элементы первого типа, 1,4,7,10 другого, 2,5,8,11 третьего и вычислить суму элементов каждого типа.
заранее спасибо
пробивал писать код, но в голову ничего не лезет :rolleyes:
 
K

kaffein

#2
всем доброго времени суток!
мне нужно создать объединение, что содержит элементы типов char, int, short, fload, long, string.
создать массив элементов типа объединения и заполнить элементы данного массива случайными значениями за таким условием: элементы массива 0,3,6,9 должны содержать элементы первого типа, 1,4,7,10 другого, 2,5,8,11 третьего и вычислить суму элементов каждого типа.
заранее спасибо
пробивал писать код, но в голову ничего не лезет :rolleyes:
union aaa
{
char a;
int b;
short c;
float d;
long s;
char v[23];
};



srand(time(NULL));
aaa de[50];
for(i=0;i<50;i+=3);
de= rand()%200;
for(j=1;j<50;j+=3);
de[j]= rand()%200;
for(k=2;k<50;k+=3);
de[k]=rand()%200;

вот чтото пробывал, но сам понимаю код маленько подибильному вышел ;)
 

DarkKnight

Well-known member
01.08.2010
653
0
#3
Вот держи..
C++:
/*
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;

}
 

Вложения

K

kaffein

#4
Вот держи..
C++:
/*
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;

}


Спасибо большое :)
 
Статус
Закрыто для дальнейших ответов.