• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

kaffein

всем доброго времени суток!
мне нужно создать объединение, что содержит элементы типов 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 КБ · Просмотры: 485
Вот держи..
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;

}



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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы