Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2011
Тип роботи:
Курсова робота
Предмет:
Інші
Група:
КІ

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки, молоді та спорту України Національний університет «Львівська політехніка» Курсова робота З програмування(частина 3) Струкури даних та алгоритми Варіанти: Завдання 1: 3.1: по горизонталі – 12%5 = 2 по вертикалі - 7%6 = 1 Завдання2: 3.2.1:№ = {[(7*5)%216]12+5}%30 = 5 3.2.2:№ = [(7+5)*(216+12)]%30 = 6 3.2.3:№ = (5*10+216*12)%30 = 2 3.2.4:№ = [7*3*216+(12%3)*5]%30 = 6 3.2.5:№ = (7+12+216*5+7*12)%30 = 13 Визначити внутрішнє представлення в пам’яті комп’ютера даних базових типів. Розглянути основні прості (цілі, дійсні, символьні, логічні) типи даних: Отримані числа згідно варіанту: b, ch2, i5, d2 Визначемо числа для вище наведенних змінних: b=(день народження * 5)%10*місяць народження = (7*5)%10*12=60 ch2 = друга літера=> Tunkalyuk=>ch2 = ‘u’=11710 = 7516 = 0111 01012 i3=день народження * 352 = 7*352 = 246410 = 9AO16 = 1001 1010 00002 d2= Z . X e + Y=(7*12).7e+12=84.7e+12(X-день народження,Y-місяць народження,Z=X*Y) Представлення рядків символів char *string5 = “35j\5\x4 3y\34d df\\””’4””\n”; мій мобільний номер: 095 82 87 964 string5[0]=’5’; string5[2]=’8’; string5[4]=’2’; string5[6]=’8’; string5[8]=’7’; string5[10]=’9’; string5[12]=’6’; string5[14]=’4’; Представлення переліків enum color6 { BLUE, //0 GREEN, //1 CYAN = -1, //-1 RED, //0 BROWN, //1 GRAY = -2, //-2 YELLOW, //-1 WHІTE = 0, //0 MAGENTA, //1 LІGHTGRAY, //2 DARKGRAY, //3 BLACK //4 } c1= CYAN, c2= BROWN, c3= DARKGRAY; Представлення масивів unsigned short array2[][4][3] 1-ий елемент масива = 0*7 = 0 2-ий елемент масива = 9*7 = 63 3-ій елемент масива = 5*7 = 35 4-ий елемент масива = 8*7 = 56 5-ий елемент масива = 2*7 = 14 6-ий елемент масива = 8*7 = 56 7-ий елемент масива = 7*7 = 49 8-ий елемент масива = 9*7 = 67 9-ий елемент масива = 6*7 = 42 10-ий елемент масива = 4*7 = 28 Представлення структур struct str6{ unsigned long e:3; // e =3024 unsigned long :2; // 2 біта не використовується short :2; // 2 біта не використовується signed short d; // d = 7440 unsigned :7; // 7 біт не використовується double a; // а = 7.84 short b:7; // b = 133920 char f; // f = 4 char c[9]; // 9 елементів по 1 байту кожен }str; str.a = 7,84 str.b = 133920 str.c[0] = ‘T’ str.c[1] = ‘u’ str.c[2] = ‘n’ str.c[3] = ‘k’ str.c[4] = ‘a’ str.d = 7440 str.e = 3024 str.f = 4 Представлення об’єднань union un13{ double f[3]; float b[2]; struct { wchar_t a[7]; int c; }; float e; bool g; } un; un.e = 84151 un.c = 11900 un.a[0] = ‘8’ un.a[1] = ‘7’ un.a[2] = ‘9’ un.a[3] = ‘6’ un.a[4] = ‘4’ Зміст Вступ Теоретична частина Алгоритм розв’язання задачі. Система тестів Завдання 1: Внутрішні формати базових типів 3.1.1. Логічний тип 3.1.2. Символьний тип 3.1.3. Цілий тип 3.1.4. Дійсний тип Завдання 2: Внутрішні формати похідних типів 3.2.1. Рядок символів 3.2.2. Перерахування 3.2.3. Масив 3.2.4. Структура 3.2.5. Об'єднання Результати виконання програми Висновки Список літератури Додатки 1.Теоретична частина 1. Базові типи даних 1.Символьні типи даних Ідентифікатором символьного типу є ключове слово char. В пам’яті комп’ютера дані символьного типу зазвичай займають 1 байт. В цей байт записується порядковий номер символа в таблиці ASCII. Тип Розмір пам'яті в байтах 16 (32) Діапазон значень  [signed] char 1 (1) -128..127  unsigned char 1 (1) 0..255   2.Логічний тип даних В мові C++ логічний тип (bool) характеризується двома значеннями: false (0) і true (1). В пам'яті комп'ютера змінна типу bool займає 1 байт. Логічні значення можна асоціювати зі значеннями типу int: значенню false відповідає нуль, значенню true відповідають всі інші числа. В арифметичних і логічних виразах логічні значення перетворюються в цілі числа. Арифметичні та бітові логічні операції виконуються над перетвореними величинами. Якщо результат приводиться знову до логічного типу, то 0 перетворюється в false, а ненульове значення перетворюється в true. bool x = true; // в пам’яті комп’ютера змінна х зберігається як послідовність: 0000 0000 bool y = false; // в пам’яті комп’ютера змінна y зберігається як послідовність: 0000 0001 3.Цілочисельні типи даних Типи short, іnt і long призначені для представлення цілих чисел. Цілі типи можуть бути знаковими (sіgned) і беззнаковими (unsіgned). В знакових типах самий лівий біт використовується для зберігання знака числа (0 – плюс, 1 – мінус). Решта бітів містять числове значення. В беззнакових типах всі біти використаються для числового значення. За замовчуванням всі цілочисельні типи вважаються знаковими. Тип Розмір пам'яті в байтах 16 (32) Діапазон значень  [signed] short [int] 2 -215 .. 215-1 = -32768 .. 32767  unsigned short [int] 2 0 .. 216-1 = 0 .. 65535  [signed] int 2 (4) -215 .. 215-1 (-231 .. 231-1)  unsigned [int] 2 (4) 0 .. 216-1 (0 .. 232-1)  [signed] long [int] 4 -231 .. 231-1 = -2 147 483 648 .. 2 147 483 647  unsigned long [int] 4 0 .. 232-1 = 0 .. 4 294 967 295   Від'ємне число типу [int[ в пам'яті комп’ютера зберігається в доповняльному двійковому коді і займає 4 байти. В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа. 4. Дійсні типи даних Дійсні константи записуються у двох формах – з фіксованою десятковою крапкою або в експонентному виді. В першому випадку крапка використовується для поділу цілої і дробової частин константи. Як ціла, так і дробова частини можуть бути відсутніми (наприклад 1.2, 0.725, 1., .35, 0.). В трьох останніх випадках відсутня або дробова, або ціла частина. Десяткова крапка повинна обов'язково бути присутньою, інакше константа буде вважатись цілою. Експонентна форма запису дійсної константи містить знак, мантису і десятковий порядок (експоненту). Мантиса – це будь-яка додатня дійсна константа у формі з фіксованою крапкою або цілою константою. е у випадку float = 127 ,у випадку – double = 1023, long double – 16383. Дійсні числа зберігаються в пам'яті комп'ютера у зворотньому порядку розміщення байт числа. Таблиця 4.7 Назва типу Іденти-фікатор Діапазон значень Внутрішній формат: s–знак,e–експонента,m–мантиса Значення числа Розмір пам’яті в байтах  Дійсне одинарної точності float від 3.410-38 до 3.41038  1 біт 8 біт 23 біта s e  m    (-1)S1,m2e -127 4  Дійсне подвійної точності double від 1.710-308 до 1.710308  1 біт 11 біт 52 біта s e  m    (-1)S1,m2e –1023 8  Дійсне підвищеної точності long double від 3.410-4932 до 3.4104932  1 біт 15 біт 1біт 63 біта s e 1  m    (-1)S1,m2e -16383 10 (8)*   Зборка за схемою: s e m  В пам’яті комп’ютера буде зберігатися у зворотному порядку розміщення байт числа. 2. Похідні типи даних 1 Рядок символів 2.Переліки Змінна, котра може приймати значення з деякого списку значень, називається змінною перелічуваного типу або переліком. Оголошення переліку задає тип змінної переліку і визначає список іменованих констант, що називається списком переліку. Імена елементів списку переліку задаються в фігурних дужках через кому. Значенням кожного імені списку є деяке ціле число. Змінна типу переліку може приймати значення однієї з іменованих констант списку. Змінні типу enum можуть використовуватись і як операнды в арифметичних операціях та в операціях відношення, і як індекси в індексних виразах. Кожен ідентифікатор іменує елемент переліку. Всі ідентифікатори в списку переліку повинні бути унікальними і повинні відрізнятись від всіх інших ідентифікаторів в тій самій області видимості, включаючи імена звичайних змінних та ідентифікатори з інших списків переліку. Ідентифікатор, зв'язаний з константним виразом, приймає значення, що задається цим константним виразом. Константний вираз повинен мати тип іnt і може бути як додатнім, так і від’ємним. Константні вирази можуть містити однакові значення. Наступний ідентифікатор в списку отримує значення, рівне константному виразу плюс 1, якщо цей ідентифікатор не має свого константного виразу. 3.Масив Масив - це впорядкований скінченний набір даних одного типу, які зберігаються в послідовно розташованих комірках оперативної пам'яті і мають спільну назву. З оголошення масиву компілятор одержує інформацію про тип елементів масиву та їх кількість. Для роботи з масивом його елементи індексуються (нумеруються), а доступ до них здійснюється за допомогою операції взяття індексу. В мові С++ індексація масивів починається з 0, тому елемент із індексом 1 насправді є другим елементом масиву, а індекс першого дорівнює 0. Індекс може бути цілим числом або цілим виразом. Якщо в якості індекса використовується вираз, то спочатку обчислюється вираз, щоб визначити конкретний елемент масиву з яким буде виконуватись робота. Елементам масиву можна задати початкові значення (ініціалізувати їх) в оголошенні масиву за допомогою списку, що знаходиться одразу після оголошення. Список містить однакові за змістом початкові значення, розділені комами і обмежені фігурними дужками. 4.Структура Елементи структури називаються полями структури і можуть мати будь-які типи, крім типу цієї ж структури, але можуть бути вказівниками на неї. Якщо відсутнє ім'я типу, то повинен бути заданий список оголошень перемінних, вказівників або масивів. Ім'я структури можна використовувати відразу після його оголошення (визначення можна дати пізніше) в тих випадках, коли компіляторові не потрібно знати розмір структури. Для змінних одного й того ж структурного типу визначена операція присвоювання, при цьому відбувається поелементне копіювання. Структуру можна передавати в функцію і повертати як значення функції. поля різних структур можуть мати однакові імена, оскільки в них різна область видимості. Більше того, можна оголошувати в одній області видимості структуру та інший об'єкт (наприклад, змінну або масив) з однаковими іменами. В пам'яті комп’ютера під кожний елемент структури виділяється визначений відповідно до типу цього елемента об’єм памяті. Елементи в пам'яті зберігаються в тому ж порядку, в якому вони були представлені в описі структури. 5.Об'єднання Об'єднання дуже схожі на структури. Однак на відміну від структури об'єднання зберігає значення тільки одного елемента в кожний момент часу. Інакше кажучи, коли виконується операція присвоювання значення елементу об'єднання, то перезаписується будь-яке попереднє присвоювання. Головною особливістю об'єднання є те, що для кожного з оголошених елементів виділяється та сама область пам'яті, тобто вони перекриваються. Пам'ять, що відповідає змінній типу об'єднання, визначається величиною, необхідною для розміщення найбільш довгого елемента об'єднання. Коли використовується елемент меншої довжини, то змінна типу об'єднання може містити зайву пам'ять, що не використовується. Всі елементи об'єднання зберігаються в одній і тій cамій області пам'яті, починаючи з однієї адреси. 2.Алгоритм розв’язання задачі. 1. Базові типи даних 1.1 Логічний тип (bool). Логічний тип (bool) характеризується двома значеннями: false (0) і true (1). До false (0) відноситься виключно „0” , а для true (1) будь-яке значення =< 1; bool x = true // в пам’яті комп’ютера змінна х зберігається як послідовність: 0000 0000 bool y = false; // в пам’яті комп’ютера змінна y зберігається як послідовність: 0000 0001 (в 16-ковій системі числення як 00 або 01 відповідно). 1.2 Символьні типи даних. За системою ASCII символ має порядковий номер. Отже, цей символ в пам’яті комп’ютера буде представлений як послідовність біт цього порядкового номеру. signed char – від -128 до 127, але тільки величини від 0 до 127 мають символьний еквівалент.Отже будемо вважати що char є символьним. 1.3 Цілочисельні типи даних. Додатнє число типу unsigned long в пам'яті комп’ютера зберігається в прямому двійковому коді і займає 4 байти.В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа.Результат записуємо в 16-ковій системі числення. 1.4. Дійсні типи даних. В пам'яті комп’ютера зберігається додатнє число типу double з невеликою кількістю перетворень: 1.Перевід цілої частини. 2.Перевід дробової частини. 3.Нормалізація. 4.Заокруглення. 5.Визначення мантиси. 6.Визначення зміщеного порядку. 7.Визначення знакового розряду. 8.Зборка за схемою: s e m       9.Запис в 16- ковій системі числення. 10.Побайтово обернути 2. Похідні типи даних 2.1 Рядок символів: Визначити представлення в пам’яті комп’ютера рядків символів. 2.2Переліки: Якщо якомусь індитифікатору буде явно присвоєне значення n то настопному індитифікатору буде присвоєно за замовчуванням n+1 і так буде до тих пір поки небуде наступного явного присвоювання. 2.3 Масив: Символьний рядок: char my[] = "Lab-1"; В пам’яті комп’ютера він зберігається в 6 байтах у такому вигляді: 0100 1100 0110 0001 0110 0010 0010 1101 0011 0001 0000 0000 my[0] = ‘L’ my[1] = ‘a’ my[2] = ‘b’ my[3] = ‘-’ my[4] = ‘1’ термінальний нуль 2.4 Структура: 1.Визначимо представлення в пам'яті комп’ютера окремо кожного поля. а) Представлення дійсної . б) Представлення символьного рядка. в) Представлення структури. г) Представлення логічної . д) Представлення символьної змінної. 2. Виміряти розмір кожної змінної. 3. Просумувати всі поля 2.5 Об'єднання: 1.Визначимо представлення в пам'яті комп’ютера окремо кожного елемента об'єднання. 2. Визначити довжину найбільшого елемента масиву – це і буде довжина об’єднання 3. Елементи послідовно записуються один за одним, накладаючись в пам'яті. 4.Довжина об'єднання вирівнюється до довжини кратної довжині базового типу. Cистема тестів 3.1 Завдання 1: Визначити внутрішнє представлення в пам’яті комп’ютера даних базових типів. Розглянути основні прості (цілі, дійсні, символьні, логічні) типи даних: b, ch2, i5, d2 bool b, unsigned char ch2, unsigned long i5, double d2 bool b b = (7*5)%10 * 12 = 60 6010 = 3C16 b>1 -> b = true ВПК: 0116 unsigned char ch2 ch2 = ‘u’ = 11710 = 7516 = 0111 01012 ВПК: 7516 unsigned long int i5 i5 = 246410 = 9AO16 = 1001 1010 00002 0000 0000 0000 0000 0000 1001 1010 00002 0 0 0 0 0 9 A 0 ВПК: А0 09 00 0016 double d2 d2 = 84.7e+12= 8470000000000010 ; 84700000000000.010 = 4D08C1699800.0= 0100 1101 0000 1000 1100 0001 0110 1001 1001 1000 0000 0000. 0000 Нормалізація: 1, 00 1101 0000 1000 1100 0001 0110 1001 1001 1000 0000 0000 0000 00* 10 ^101110 е = 1023 + 46 = 106910 = 42D16 = 100 0010 11012 s = 1 m=1101 1011 0010 0010 1101 0000 1110 0101 0110 0000 0100 0001 1001 S E M  0 100 0010 1101 0011 0100 0010 0011 0000 0101 1010 0110 0110 0000 0000 0000 0000   ВПК: 00 00 66 5A 30 42 D3 42 3.2 Завдання 2 Визначити внутрішнє представлення в пам’яті комп’ютера даних похідних типів. 3.2.1: Представлення рядків символів Визначити представлення в пам’яті комп’ютера рядків символів. char *string5 = “35j\5\x4 3y\34d df\\””’4””\n”; виконаємо наступні пере присвоювання: string5[0] = ‘5’; string5[2] = ‘8’; string5[4] = ‘2’; string5[6] = ‘8’; string5[8] = ‘7’; string5[10] = ‘9’; string5[12] = ‘6’; string5[14] = ‘4’; X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  String5[X] 3 5 j ♣ ♦ (SP) 3 y (РЗ) d (SP) d f \ ‘ 4 NL  У 16 СЧ 33 35 6A 5 4 20 33 79 1C 64 20 64 66 5C 27 34 A  Примітка: (SP) – space (РЗ) – розділювач файлів(це є недрукований символ який в таблиці ASCII знаходиться під порядковим номером 28(у десятковій системі)) NL – new line після переприсвоювання, даний рядок набуде вигляду: X 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  String5[X] 5 5 8 ♣ 2 (SP) 8 Y 7 d 9 d 6 \ 4 4 NL  У 16 СЧ 35 35 38 5 32 20 38 79 37 64 39 64 36 5C 34 34 A  В результаті на екрані виведеться даний рядок: char *string5 = “558♣2 8y7d9d6\44” ВПК: 35 35 38 05 32 20 38 79 37 64 39 36 5С 34 34 0А 0016 00 в кінці означає 0 символ(кінець рядка) 3.2.2: Представлення переліків Визначити представлення в пам’яті комп’ютера переліків. enum color6 { BLUE, //0 GREEN, //1 CYAN = -1, //-1 RED, //0 BROWN, //1 GRAY = -2, //-2 YELLOW, //-1 WHІTE = 0, //0 MAGENTA, //1 LІGHTGRAY, //2 DARKGRAY, //3 BLACK //4 } c1= CYAN, c2= BROWN, c3= DARKGRAY; на екрані виведеться: -1, 1, 3 С1 ВПК: 00 00 00 11 11 11 11 00 + 1 11 11 11 01 С1 ВПК: FD FF FF FF C2 ВПК: 01 00 00 00 С3 ВПК: 03 00 00 00 3.2.3: Представлення масивів Визначити представлення в пам’яті комп’ютера масивів. unsigned short array2[][4][3] = {23, 4, 3, ‘4’} оскільки всередині головних фігурних дужок знаходиться тільки один рядок => array2[1][4][3] даний масив буде займати в пам’яті комп’ютера 24 байта(2*1*4*3) масив до переприсвоювання: 23 4 3  ‘4’ 0 0  0 0 0  0 0 0  ВПК: 17 00 04 00 03 00 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0016 1-ий елемент масива = 0*7 = 0 2-ий елемент масива = 9*7 = 63 3-ій елемент масива = 5*7 = 35 4-ий елемент масива = 8*7 = 56 5-ий елемент масива = 2*7 = 14 6-ий елемент масива = 8*7 = 56 7-ий елемент масива = 7*7 = 49 8-ий елемент масива = 9*7 = 67 9-ий елемент масива = 6*7 = 42 10-ий елемент масива = 4*7 = 28 Масив після переприсвоювання: array2[0][0][0]=0 array2[0][0][1]=63 array2[0][0][2]=35 array2[0][1][0]=56 array2[0][1][1]=14 array2[0][1][2]=56 array2[0][2][0]=49 array2[0][2][1]=67 array2[0][2][2]=42 array2[0][3][0]=28 array2[0][3][1]=0 array2[0][3][2]=0 0 63 35  56 14 56  49 67 42  28 0 0  ВПК в масиві записується по порядку(тобто так як елементи ідуть в таблиці) ВПК: 00 00 3F 00 23 00 38 00 0E 00 38 00 31 00 43 00 2A 00 1C 00 00 00 00 0016 3.2.4 Представлення структур Визначити представлення в пам’яті комп’ютера структур. struct str6 { unsigned long e:3; // e = 3024 unsigned long :2; // 2 біта не використовується short :2; // 2 біта не використовується signed short d; // d = 7440 unsigned :7; // 7 біт не використовується double a; // а = 7.84 short b:7; // b = 133920 char f; // f = 4 char c[9]; // 9 елементів по 1 байту }str; str.a = 7,84; //7.8410 = 7.0D70A3D16 str.b = 133920; //13392010 = 20B2016 str.c[0] = ‘T’; //5416 = 0101 01002 str.c[1] = ‘u’; //7516 = 0111 01012 str.c[2] = ‘n’; //6E16 = 0110 11102 str.c[3] = ‘k’; //6B16 = 0110 10112 str.c[4] = ‘a’; //6116 = 0110 00012 str.d = 7440; //744010 = 1D1016 str.e = 3024; //302410 = BD016 str.f = 4; а: 7,84 = 0111.0000 1101 0111 0000 1010 0011 11012 = 01.11 0000 1101 0111 0000 1010 0011 11012 * 10^00102 s = 0; e = 127 + 2 = 12916 = 1000 00012 ; m = 11 0000 1101 0111 0000 1010 0 a: 0100 0000 1110 0001 1010 1110 0001 01002 b: 0010 0000 1011 0010 000016 c[0]: 0101 01002 c[1]: 0111 01012 c[2]: 0110 11102 c[3]: 0110 10112 c[4]: 0110 00012 d: 0001 1101 0001 00002 e: 1011 1101 00002 f: 01002 Бітові поля показують компілятору скільки біт не використовувати Загальна довжина структури: 4+4+4+8+8+2+1+9=40 байт Номер байту 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  значення CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC  число unsigned long e:3 unsigned long:2 short d Вирівнювання до unsigned unsigned:7   Номер байту 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  значення CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC  число вирівнювання до double double a short b:7 char f char[0]   Номер байту 33 34 35 36 37 38 39 40  Значення СС СС СС СС СС СС СС СС  число char[1] char[2] char[3] char[4] char[5] char[6] char[7] char[8]   Структура після присвоювання: Номер байту 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16  значення C8 CC CC CC CC CC 10 1D CC CC CC CC CC CC CC CC  число unsigned long e:3 unsigned long:2 short d Вирівнювання до unsigned unsigned:7   Номер байту 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32  значення 00 00 00 00 00 00 1C 40 A0 CC 04 54 75 6E 6B 61  число double a short b:7 char f char[0] char[1] char[2] char[3] char[4]   Номер байту 33 34 35 36 37 38 39 40  Значення CC СС СС СС СС СС СС СС  число char[5] char[6] char[7] char[8] Вирівнювання до загальної довжини структури   3.2.5. Представлення об'єднань Визначити представлення в пам’яті комп’ютера об'єднань. union un13 { double f[3]; //24 байта float b[2]; //8 байт struct { wchar_t a[7]; //14+2байт загальна довжина структури int c; //4 байта 20 байт }; float e; //4 байта bool g; //1 байт } un; un.e = 84151 //148B716 un.c = 11900 //2Е7С16 un.a[0] = ‘8’ //3816 un.a[1] = ‘7’ //3716 un.a[2] = ‘9’ //3916 un.a[3] = ‘6’ //3616 un.a[4] = ‘4’ //3416 загальна довжина об’єднання = 24 байта(20+4=24) ми додаємо 6 для того, щоб довжина нашого об’єднання була кратньою найбільшому базовому типу даного об’єднання. float e 148B716 = 0001.0100 1000 1011 0111*10^100002 s=0; e = 12710+1610 =14310 = 1000 11112 m=0100 1000 1011 0111 0000 00002 число: 0 1000 1111 0100 1000 1011 0111 0000 00002 ВПК: 80 5B A4 4716 struct{ Wchar_t a[7]; int c; }; Ця структура займає в ВПК 16+4 = 20 байт Спочатку все заповнюється СС. Після цього ми заповнюємо масив: a[7] ВПК: 38 00 37 00 39 00 36 00 34 00 CC CC СС СС6 останні дві пари СС – це наші вільні елементи масиву яким не було надано значень. А так як ми вирівнювали, то потрібно додати ще 2 пари СС остаточно: а[7] ВПК 38 00 37 00 39 00 36 00 34 00 СС СС СС СС СС СС16 Змінній с надано значення 2Е7С Отже с ВПК: 7С 2Е 00 0016 Наша структура у ВПК запишеться ВПК: 38 00 37 00 39 00 36 00 34 00 СС СС СС СС СС СС 7С 2Е 00 0016 Отже:дій присвоєння виконуємо так як їх оголошенно після об’єднання. Тобто спочатку записуємо змінну е: ВПК: 80 5В А4 47 СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС СС16 Дальше у нас є структура. Так як у структурі, базові типи відрізняються від попередніх, то вони будуть замінювати попередні значення -> ВПК даного об’єднання буде мати вигляд: ВПК: 38 00 37 00 39 00 36 00 34 00 CC CC CC CC CC CC 7C 2E 00 00 CC CC CC CC16 Результати виконання программ / Висновок: Досліджував внутрішнє представлення в пам’яті комп’ютера базових та похідних типів даних статичної структури. Список літератури: Грегори К. Использование Visual С++. Специальное издание. - М.: «Диалектика», 1999. Мешков А.В., Тихомиров Ю.В. Visual С++ и MFC. Пер. с англ. – 2-е изд. перераб. и доп. – СПб.: БХВ - Петербург, 2002. – 1040 с. Страуструп Б. Язык программирования С++. Третье издание. - М.: «Издательство Бином», 1999. Трамбле Ж., Соренсон П. Введение в структуры данных. – М.:Машиностроение, 1982 Уильям Топп, Уильям Форд. Структуры данных в С++. – М.:Бином, 2000 - 700 с
Антиботан аватар за замовчуванням

05.01.2013 17:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!