- •Курсова робота з дисципліни «Програмування. Частина ііі. Структури даних та алгоритми»
- •Завдання на курсову роботу
- •Теоретична частина
- •1.1 Базові типи даних
- •1.1.1 Логічний тип даних
- •1.1.2 Символьні типи даних
- •1.1.3 Цілочисельні типи даних
- •1.1.4 Дійсні типи даних
- •1.2 Похідні типи даних
- •1.2.1 Тип даних «Рядок»
- •1.2.2 Тип даних «Перерахування» («Перелік»)
- •1.2.3 Тип даних «Масив»
- •1.2.4 Тип даних «Структура»
- •1.2.5 Тип даних «Об’єднання»
- •Система тестів
- •3.1 Базові типи даних
- •3.2 Похідні типи даних
- •3.2.1 Рядок символів
- •3.2.2 Переліки
- •3.2.3 Масив
- •3.2.4 Структура
- •3.2.5 Об’єднання
- •Результати виконання програми
- •Висновки
- •Додатки
3.2 Похідні типи даних
3.2.1 Рядок символів
char *string15 = "\xabn\\\n\v""abcde""vnsc6\x23";
Після цього виконати деякі переприсвоювання згідно варіанту.
string15 [0] = '3';
string15 [2] = '1';
string15 [4] = '7';
string15 [6 ] = '2';
string15 [8] = '8';
string15 [10] = '6';
string15 [12] = '4';
string15 [14] = '7';
Розіб’ємо рядок на окремі біти :
char *string15 = "\xabn\\\n\v""abcde""vnsc6\x23";
string15 = ‘AB16’ ‘n’ ‘\’ ‘\n’ ‘\v’ ‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘v’ ‘n’ ’s ’‘c’ ‘6’‘2316’
в шістнадцятковій: AB 6E 5C 0A 0B 61 62 63 64 65 76 6E 73 63 36 23 00
Після виконання операцій присвоювання рядок матиме вигляд:
string15 = ‘3316’ ‘n’ ‘3116’ ‘\n’ ‘3716’ ‘a’ ’3216’ ‘c’ ‘3816’ ‘e’ ‘3616’ ‘n’ ’3416 ’‘c’ ‘3716’‘2316’
в шістнадцятковій: 33 6E 31 0A 37 61 32 63 38 65 36 6E 34 63 37 23 00
Отже, в пам’яті комп’ютера після переприсвоєння рядок зберігатиметься як послідовність:
33 6E 31 0A 37 61 32 63 38 65 36 6E 34 63 37 23 00
3.2.2 Переліки
enum color10 {
BLUE,
GREEN,
CYAN,
RED,
BROWN,
GRAY = 1,
YELLOW,
WHІTE,
MAGENTA,
LІGHTGRAY,
DARKGRAY = -2,
BLACK
} c1= CYAN,
c2= BROWN,
c3= DARKGRAY;
Значення кожного елемента переліку:
BLUE = 0 |
RED = 3 |
YELLOW =2 |
LІGHTGRAY = 5 |
GREEN = 1 |
BROWN = 4 |
WHІTE = 3 |
DARKGRAY = -2 |
CYAN = 2 |
GRAY = 1 |
MAGENTA = 4 |
BLACK = -1 |
Змінна с1 = CYAN (2), зберігатиметься в прямому коді і займатиме 4 байти (int).
210 = 0000 0000 0000 0000 0000 0000 0000 00102 = 00 00 00 0216
В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа:02 00 00 00
Відповідь : 02 00 00 0016.
Змінна с2 = BROWN = (4), зберігатиметься в прямому коді і займатиме 4 байти (int).
410 = 0000 0000 0000 0000 0000 0000 0000 01002 = 00 00 00 0416
В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа: 04 00 00 00
Відповідь :04 00 00 0016.
Змінна с3=DARKGRAY=(-2), зберігатиметься в доповняльному коді і займатиме 4 байти (int).
0000 0000 0000 0000 0000 0000 0000 0010
1111 1111 1111 1111 1111 1111 1111 1101
+ 1
1111 1111 1111 1111 1111 1111 1111 1110
Останній біт – знаковий, в данномук випадку рівний 1(число від’ємне)
-210 = 1111 1111 1111 1111 1111 1111 1111 11102 = FF FF FF FE16
В пам’яті комп’ютера результат зберігатиметься в зворотному розміщенні байт числа: FE FF FF FF
Відповідь :FE FF FF FF16.
3.2.3 Масив
wchar_t array10[][3][2] = {{1,123}, {23,'4', true}}
Після цього виконати переприсвоювання згідно варіанту.
array10[0][0][0] = 0; // 0 * 22 = 0
array10[0][0][1] = 132; // 6 * 22 = 132
array10[0][1][0] = 66; // 3 * 22 = 66
array10[0][1][1] = 22; // 1 * 22 = 22
array10[0][2][0] = 154 // 7 * 22 = 154
array10[0][2][1] = 44; // 2 * 22 = 44
array10[1][0][0] = 176; // 8 * 22 = 176
array10[1][0][1] = 132; // 6 * 22 = 132
array10[1][1][0] = 88; // 4 * 22 = 88
array10[1][1][1] = 154; // 7 * 22 = 154
Після переприсвоєння масив набуде значень (десяткових):
array10[0][0][0] = 0; array10[0][0][1] = 132;
array10[0][1][0] = 66; array10[0][1][1] = 22;
array10[0][2][0] = 154; array10[0][2][1] = 44;
array10[1][0][0] = 176; array10[1][0][1] = 132;
array10[1][1][0] = 88; array10[1][1][1] = 154;
В пам’яті комп’ютера масив зберігається як послідовність чисел яка читається зліва направо і зверху вниз по матрицях масиву, при чому байти числа записані в зворотньому порядку у шістнадцятковій системі числення.
Тип wchar_t займає у ПК 2 байти, тому :
00 00 84 00 42 00 16 00 9A 00 2C 00 B0 00 84 00 58 00 9A 00 00 00 00 0016
Відповідь : 00 00 84 00 42 00 16 00 9A 00 2C 00 B0 00 84 00 58 00 9A 00 00 00 00 0016