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

Тема в разделе "C/C++/C#", создана пользователем kaffein, 30 ноя 2010.

Статус темы:
Закрыта.
  1. kaffein

    kaffein Гость

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

    kaffein Гость

    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;

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

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Вот держи..
    Код (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
      Размер файла:
      35,2 КБ
      Просмотров:
      25
  4. kaffein

    kaffein Гость



    Спасибо большое :)
     
Загрузка...
Похожие Темы - Задача объединения разных
  1. Янчик
    Ответов:
    0
    Просмотров:
    474
  2. TrishaRay
    Ответов:
    1
    Просмотров:
    778
  3. elzim
    Ответов:
    0
    Просмотров:
    929
  4. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.116
  5. eremin-sanek
    Ответов:
    3
    Просмотров:
    1.104
Статус темы:
Закрыта.

Поделиться этой страницей