Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки,
Національний університет «Львівська Політехніка»
Кафедра ЕОМ
/
Розрахункова робота
з дисципліни «Обчислювальний практикум»
на тему:
«Представлення структур і об'єднань»
Мета роботи: Визначити представлення в пам’яті комп’ютера структур і об'єднань.
Індивідуальне завдання №1
Оголосити структуру згідно наведеній нижче таблиці. Після цього надати всім елементам структури певні значення, задані після таблиці.
Варіант 9.
struct str9 {
char c[5];
double a;
int :12;
unsigned long d;
short b:8;
char f;
char :7;
unsigned :3;
unsigned short e:5;
}str;
Хід роботи
1. Запускаю першу програму на виконання.
/
Індивідуальне завдання №2
Оголосити об'єднання згідно наведеній нижче таблиці. Після цього надати деяким елементам об'єднання початкові значення, задані після таблиці.
Варіант 7.
union un7 {
int b;
struct {
float f[2];
wchar_t a[6];
};
struct {
char d[5];
float e;
};
int c;
} un;
2. Запускаю другу програму на виконання.
/
Висновок: У цій лабораторній роботі я навчився визначати представлення в пам’яті комп’ютера структур і об'єднань.
Текст програми:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "ukr");
struct str9 {
char c[5];
double a;
int : 12;
unsigned long d;
short b : 8;
char f;
char : 7;
unsigned : 3;
unsigned short e : 5;
}str;
str.a = 24.168;
str.b = 25 * 97 * 124;
str.c[0] = 'К';
str.c[1] = 'а';
str.c[2] = 'р';
str.c[3] = 'п';
str.c[4] = 'и';
str.d = 764 * 25 * 1;
str.e = 24 * 7 * 36;
str.f = '5';
cout << "Представлення типу struct в пам'ятi: ";
unsigned char *vstr = (unsigned char *)(&str);
for (int i = 0; i<sizeof(str); i++)
printf("%02X ", vstr[i]);
printf("\n");
cout << endl;
union un7 {
int b;
struct {
float f[2];
wchar_t a[6];
};
struct {
char d[5];
float e;
};
int c;
} un;
un.e = 97 * 325 + 1997 * 24;
un.c = 24 * (7 + 25) * 100;
un.a[0] = 9;
un.a[1] = 7;
un.a[2] = 0;
un.a[3] = 2;
un.a[4] = 5;
cout << endl;
cout << "Представлення типу union в пам'ятi: ";
unsigned char *vun = (unsigned char *)(&un);
for (int i = 0; i<sizeof(un); i++)
printf("%02X ", vun[i]);
printf("\n");
cout << endl;
system("pause");
}