ВОПРОС · Q&A

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

3 ответов 3,9 тыс.
AI-выжимка обсуждения скоро

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

Статус
Закрыто для дальнейших ответов.
Автор вопроса
всем доброго времени суток!
мне нужно создать объединение, что содержит элементы типов char, int, short, fload, long, string.
создать массив элементов типа объединения и заполнить элементы данного массива случайными значениями за таким условием: элементы массива 0,3,6,9 должны содержать элементы первого типа, 1,4,7,10 другого, 2,5,8,11 третьего и вычислить суму элементов каждого типа.
заранее спасибо
пробивал писать код, но в голову ничего не лезет :rolleyes:
 
всем доброго времени суток!
мне нужно создать объединение, что содержит элементы типов 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;

вот чтото пробывал, но сам понимаю код маленько подибильному вышел ;)
 
Вот держи..
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;

}
 

Вложения

  • union.jpg
    union.jpg
    20,1 КБ · Просмотры: 575
Вот держи..
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;

}



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