0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 30
1

как можно сделать покрасивее?

04.06.2013, 22:45. Показов 563. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/Задание. Разделение массива на несколько
Дан массив i[] состоящий из n чисел типа int 
(случайное равномерное заполнение выполняется программой), 
n=10. Произвести сохранение всех элементов массива i[] в
элементах 4-х массивов типа char (массивы a[],b[],c[],d[]).
Например, число int состоит из 32 бит (4 байт). 
Первый байт элемента i[k] следует сохранить в массиве a[] 
с соответствующим индексом элемента k (a[k]). Второй байт — аналогично 
в массиве b (b[k]). Третий и четвёртый байты - в массивах c и d соответственно. 
Вывести массивы a,b,c,d на экран.
Произвести обратную операцию объединения числа, для этого 
выполнить «сбор» массивов  a,b,c,d в массив j[] типа int. 
Вывести массив j[] на экран./
 
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <iostream>
#include <locale.h>
 
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Rus");   
    srand(time(0));
    const int n=10;
    int i=0,mas[n];
    printf("ИСХОДНЫЙ:\n\n");
    for (i=0;i<n;i++)
    {
        mas[i]=rand()%1001;
        printf ("%d  ", mas[i]);
    }
 
    printf ("\n\n");
    unsigned char a[n], b[n], c[n], d[n];
    for (i=0;i<n;i++) 
    {
        a[i]=mas[i]>>24;
        printf ("%4u ",a[i]);
        b[i]=(mas[i]>>16);
        printf ("%4u ",b[i]);
        c[i]=(mas[i]>>8);
        printf ("%4u ",c[i]);
        d[i]=mas[i];
        printf ("%4u\n",d[i]);
    }
 
    printf ("\n");
    printf ("СОБРАННЫЙ:\n");
    printf ("\n");
 
    int j[n]={0};
    for (i=0;i<n;i++)   
    {
        j[i]=(j[i]|a[i])<<8;
        j[i]=(j[i]|b[i])<<8;
        j[i]=(j[i]|c[i])<<8;
        j[i]=j[i]|d[i];
        printf ("%d  ",j[i]);
    }
    printf ("\n");
    printf ("\n");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2013, 22:45
Ответы с готовыми решениями:

Как можно сделать что бы в консольном окне можно было вызвать контекстное меню как в win cmd?
Если вызвать cmd в windows то в нем можно вызывать контекстное меню и совершать различные полезные...

Можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву
подскажите можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву?...

Как покрасивее сделать upload базы данных Accsess на сервер и подключить ее?
Уважаемые коллеги не подскажет ли кто как покрасивее сделать upload базы данных Accsess на сервер и...

Как бы покрасивее напечатать код из-под VB IDE ?!
Существует ли какая-нибудь 'примочка', позволяющая напечатать ВБ-код из среды разработки с...

6
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
04.06.2013, 23:43 2
Например такой вариант:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <clocale>
#include <random>
#include <limits>
#include <iomanip>
#include <cstdint>
 
union MyUnion
{
    uint32_t value;
    uint8_t uc[4];
};
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(1, std::numeric_limits<int>::max());
 
    std::setlocale(LC_ALL, "Rus");   
    const int n=5;
    int mas[n];
    
    std::cout << "ИСХОДНЫЙ:\n\n";
    for (int i=0;i<n;i++)
    {
        mas[i] = dis( gen );
        std::cout << mas[i] << " ";
    }
 
    std::cout << std::endl;
    uint8_t a[n], b[n], c[n], d[n];
    uint8_t* arr[] = { a, b, c, d };
 
    for (int i=0;i<n;i++) 
    {
        MyUnion u;
        u.value = mas[i];
        
        for( int j=0; j<4; ++j )
        {
            arr[j][i] = u.uc[j];
            std::cout << std::setw(4) << static_cast<int>(arr[j][i]) << " ";
        }
 
        std::cout << std::endl;
    }
 
    std::cout << "\nСОБРАННЫЙ:\n";
 
    for (int i=0;i<n;i++)   
    {
        MyUnion u;
        for( int j=0; j<4; ++j )
        {
            u.uc[j] = arr[j][i];
        }
        std::cout << u.value << " ";
    }
 
    std::system( "pause" );
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 04.06.2013
Сообщений: 30
05.06.2013, 03:03  [ТС] 3
Tulosba, ого. до вашего кода мне еще далеко, не дорос я до такого уровня!

Добавлено через 9 минут
Tulosba, плюс ко всему visual studio ругается на ваш синтаксис и не знает ни одной из предложенных вами библиотек! я даже не могу посмотреть, как она работает( что мне изменить, подскажите!
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.06.2013, 03:12 4
Tulosba, 2 хедера потеряли

Добавлено через 3 минуты
vezde-smirno, выкинуть VS при создании проекта уберите галочку с "предварительно скомпилированный заголовок"
Хотя если у вас не последняя версия, это вам лишь чуть поможет, т.к. тут С++11, а у VS со стандартами плохо.

Добавлено через 3 минуты
Кстати, если без параметров распределение создавать, то будет от 0 до std::numeric_limits<>::max(), но если уж так хочется с 1, то второй параметр по умолчанию все равно будет std::numeric_limits<>::max()
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.06.2013, 12:57 5
Цитата Сообщение от MrGluck Посмотреть сообщение
2 хедера потеряли
какие?
Цитата Сообщение от MrGluck Посмотреть сообщение
а у VS со стандартами плохо
Проверял как раз в VS2012
Цитата Сообщение от MrGluck Посмотреть сообщение
то второй параметр по умолчанию все равно будет std::numeric_limits<>::max()
Точно. Не посмотрел в конструктор. Правда т.к. контейнер из uint32_t, надо бы было начальное значение к этому типу ещё привести.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
05.06.2013, 16:05 6
Tulosba, iostream и cstdlib (ф-ция system)
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.06.2013, 16:13 7
MrGluck, точняк.

Не по теме:

Ну, всё, код теперь только под VS2012 значит :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.06.2013, 16:13
Помогаю со студенческими работами здесь

можно сделать данную программу проще?как можно примитивней
Var F,x: real; Function ArcCos(z:Real):Real; begin if Round(z*10000000)=10000000 then...

Как можно сделать так, чтоб можно было вписывать время в таблицу?
Есть таблица: create table PROGRAMY ( pr_name varchar2(50), zanra_ID number primary key,...

Можно ли на планшете вместо 8ки поставить 7ку? Как это можно сделать?
Здравствуйте! Такой вот вопросик: Кто-то сталкивался с переустановкой винды на планшетах? Если да,...

Можно ли своими руками сделать такой чисто оптический девайс и как его можно обозвать?
Девайс предназназначен для просмотра статических стереопар. Стереопары вместе с разметкой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru