Родитель
							
								
									193cab7c1f
								
							
						
					
					
						Сommit
						806f9d52a5
					
				@ -0,0 +1,131 @@
 | 
				
			||||
#include <iostream>
 | 
				
			||||
#include <cstddef>
 | 
				
			||||
 | 
				
			||||
using namespace std;
 | 
				
			||||
 | 
				
			||||
void print_in_hex(uint8_t byte)
 | 
				
			||||
{
 | 
				
			||||
    printf("%02X ", byte);
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void print_in_hex(const void* data, size_t size)
 | 
				
			||||
{
 | 
				
			||||
    const uint8_t* bytes = (const uint8_t*)data;
 | 
				
			||||
    for (size_t i = 0; i < size; i++)
 | 
				
			||||
    {
 | 
				
			||||
        print_in_hex(bytes[i]);
 | 
				
			||||
        if ((i + 1) % 8 == 0)
 | 
				
			||||
            printf("\n");
 | 
				
			||||
    }
 | 
				
			||||
    printf("\n");
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void print_in_binary(uint8_t byte)
 | 
				
			||||
{
 | 
				
			||||
    for (int i = 7; i >= 0; i--)
 | 
				
			||||
    {
 | 
				
			||||
        printf("%d", (byte >> i) & 1);
 | 
				
			||||
        if (i % 8 == 0)
 | 
				
			||||
            printf(" ");
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
void print_in_binary(const void* data, size_t size)
 | 
				
			||||
{
 | 
				
			||||
    const uint8_t* bytes = (const uint8_t*)data;
 | 
				
			||||
    for (size_t i = 0; i < size; ++i)
 | 
				
			||||
    {
 | 
				
			||||
        print_in_binary(bytes[i]);
 | 
				
			||||
        if ((i + 1) % 8 == 0)
 | 
				
			||||
            printf("\n");
 | 
				
			||||
    }
 | 
				
			||||
}
 | 
				
			||||
 | 
				
			||||
#pragma pack(1)
 | 
				
			||||
// Ñòðóêòóðà ñòóäåíòà
 | 
				
			||||
struct Student 
 | 
				
			||||
{
 | 
				
			||||
    // Èìÿ
 | 
				
			||||
    char _name[17];
 | 
				
			||||
    // ãîä ïîñòóïëåíèÿ
 | 
				
			||||
    uint16_t _year;
 | 
				
			||||
    // ñðåäíèé áàëë
 | 
				
			||||
    float _averageGrade;
 | 
				
			||||
    // ïîë (0 — æåíñêèé, 1 — ìóæñêîé)
 | 
				
			||||
    uint8_t _gender : 1;
 | 
				
			||||
    // êîëè÷åñòâî ïðîéäåííûõ êóðñîâ
 | 
				
			||||
    uint8_t _numCourses : 7;
 | 
				
			||||
    // óêàçàòåëü íà ñòàðîñòó ãðóïïû
 | 
				
			||||
    Student* _leader;
 | 
				
			||||
};
 | 
				
			||||
#pragma pack()
 | 
				
			||||
 | 
				
			||||
int main() 
 | 
				
			||||
{
 | 
				
			||||
    setlocale(LC_ALL, "Russian");
 | 
				
			||||
    Student students[3] = {0};
 | 
				
			||||
 | 
				
			||||
    // Çàïîëíåíèå äàííûõ äëÿ ñòàðîñòû
 | 
				
			||||
    strcpy(students[0]._name, "Îëüãà");
 | 
				
			||||
    students[0]._year = 2020;
 | 
				
			||||
    students[0]._averageGrade = 4.9f;
 | 
				
			||||
    students[0]._gender = 0;
 | 
				
			||||
    students[0]._numCourses = 7;
 | 
				
			||||
    students[0]._leader = nullptr;
 | 
				
			||||
 | 
				
			||||
    // Çàïîëíåíèå äàííûõ äëÿ âòîðîãî ñòóäåíòà
 | 
				
			||||
    strcpy(students[1]._name, "Èâàí");
 | 
				
			||||
    students[1]._year = 2020;
 | 
				
			||||
    students[1]._averageGrade = 4.5f;
 | 
				
			||||
    students[1]._gender = 1;
 | 
				
			||||
    students[1]._numCourses = 5;
 | 
				
			||||
    students[1]._leader = &students[0];
 | 
				
			||||
 | 
				
			||||
    // Çàïîëíåíèå äàííûõ äëÿ òðåòüåãî ñòóäåíòà
 | 
				
			||||
    strcpy(students[2]._name, "Äàíèë");
 | 
				
			||||
    students[2]._year = 2021;
 | 
				
			||||
    students[2]._averageGrade = 4.8f;
 | 
				
			||||
    students[2]._gender = 1;
 | 
				
			||||
    students[2]._numCourses = 6;
 | 
				
			||||
    students[2]._leader = &students[0];
 | 
				
			||||
 | 
				
			||||
    // Âûâîä àäðåñà è ðàçìåðà ìàññèâà
 | 
				
			||||
    cout << "Àäðåñ ìàññèâà: " << &students << endl;
 | 
				
			||||
    cout << "Ðàçìåð ìàññèâà: " << sizeof(students) << " áàéò" << endl;
 | 
				
			||||
 | 
				
			||||
    // Âûâîä àäðåñîâ è ðàçìåðîâ âñåõ ýëåìåíòîâ ìàññèâà
 | 
				
			||||
    for (int i = 0; i < 3; i++) 
 | 
				
			||||
    {
 | 
				
			||||
        cout << "Àäðåñ ýëåìåíòà " << i << ": " << &students[i] << endl;
 | 
				
			||||
        cout << "Ðàçìåð ýëåìåíòà " << i << ": " << sizeof(students[i]) << " áàéò" << endl;
 | 
				
			||||
    }
 | 
				
			||||
 | 
				
			||||
    // Âûâîä èíôîðìàöèè î ïîëÿõ îäíîãî èç ýëåìåíòîâ ìàññèâà (íå ñòàðîñòû)
 | 
				
			||||
    int index = 1;
 | 
				
			||||
    Student& student = students[index];
 | 
				
			||||
    cout << "Èíôîðìàöèÿ î ñòóäåíòå " << index << ":" << endl;
 | 
				
			||||
    cout << "Çíà÷åíèå ïîëÿ _name: " << student._name << endl;
 | 
				
			||||
    cout << "Àäðåñ ïîëÿ _name: " << &(student._name) << endl;
 | 
				
			||||
    cout << "Ñìåùåíèå ïîëÿ _name îò íà÷àëà ñòðóêòóðû: " << offsetof(Student, _name) << " áàéò" << endl;
 | 
				
			||||
    cout << "Ðàçìåð ïîëÿ _name: " << sizeof(student._name) << " áàéò" << endl;
 | 
				
			||||
    cout << "Øåñòíàäöàòåðè÷íîå ïðåäñòàâëåíèå ïîëÿ _name:" << endl;
 | 
				
			||||
    print_in_hex(student._name, sizeof(student._name));
 | 
				
			||||
    cout << "Äâîè÷íîå ïðåäñòàâëåíèå ïîëÿ _name:" << endl;
 | 
				
			||||
    print_in_binary(student._name, sizeof(student._name));
 | 
				
			||||
    cout << endl;
 | 
				
			||||
 | 
				
			||||
    cout << "Ýëåìåíòû ìàññèâà â øåñòíàäöàòåðè÷íîì âèäå:" << endl;
 | 
				
			||||
    cout << "(Ïåðâûå " << sizeof(student._name) << " áàéò - ïîëå _name):" << endl;
 | 
				
			||||
    cout << "(Äàëåå " << sizeof(student._year) << " áàéòà - ïîëå _year):" << endl;
 | 
				
			||||
    cout << "(Äàëåå " << sizeof(student._averageGrade) << " áàéòà - ïîëå _averageGrade):" << endl;
 | 
				
			||||
    cout << "(Äàëåå " << sizeof(uint8_t) << " áàéòà - 1 áèò äëÿ _gender è 7 áèò äëÿ _numCourses):" << endl;
 | 
				
			||||
    cout << "(Äàëåå " << sizeof(student._leader) << " áàéòà - ïîëå _leader):" << endl;
 | 
				
			||||
    for (int i = 0; i < 3; i++)
 | 
				
			||||
    {
 | 
				
			||||
        cout << "Ñòóäåíò ñ èíäåêñîì " << i << endl;
 | 
				
			||||
        print_in_hex(&students[i], sizeof(students[i]));
 | 
				
			||||
    }
 | 
				
			||||
 | 
				
			||||
    system("pause");
 | 
				
			||||
    return 0;
 | 
				
			||||
}
 | 
				
			||||
					Загрузка…
					
					
				
		Ссылка в новой задаче