diff --git a/task_3 b/task_3
new file mode 100644
index 0000000..26b5a46
--- /dev/null
+++ b/task_3
@@ -0,0 +1,154 @@
+#inlude
+#include
+#include
+#include
+#include
+#include
+
+using namespace std;
+
+struct Student {
+char name[17]; // Массив из 17 байт
+uint16_t year; // целое число без знака 2 байта
+float average_score; // успеваемость, представлена числом с плавающей точкой
+unsigned int gender : 1; // пол студента, 0 - мужской, 1 - женский
+uint16_t courses; // количество пройденных курсов
+Student* leader; // указатель на старосту
+
+// вывод данных в шестнадцатеричном формате
+void print_hex(const void* data, size_t size) const {
+    const uint8_t* bytes = reinterpret_cast<const uint8_t*>(data); 
+    for (size_t i = 0; i < size; i++) { 
+        cout << hex << uppercase << setw(2) << setfill('0') 
+             << static_cast<int>(bytes[i]) << " ";        
+    }
+    cout << dec; // Возвращаем десятичный вывод
+}
+
+// вывод данных в двоичном формате
+void print_binary(const void* data, size_t size) const {
+    const uint8_t* bytes = reinterpret_cast<const uint8_t*>(data); 
+    for (size_t i = 0; i < size; i++) {   
+        for (int j = 7; j >= 0; j--) {      
+            cout << ((bytes[i] >> j) & 1); 
+        }
+        cout << " "; 
+    }
+}
+};
+
+int main() {
+setlocale(LC_ALL, "Russian");
+
+Student students[3]; 
+
+// Вносим данные про студентов 
+strcpy(students[0].name, "Александр "); 
+students[0].year = 2019;       
+students[0].average_score = 4.2; 
+students[0].gender = 1;      
+students[0].courses = 6;     
+students[0].leader = nullptr; 
+
+strcpy(students[1].name, "Алексей");
+students[1].year = 2022;
+students[1].average_score = 3.5;
+students[1].gender = 1;
+students[1].courses = 3;
+students[1].leader = &students[0]; 
+
+strcpy(students[2].name, "Екатерина");
+students[2].year = 2021;
+students[2].average_score = 4.1;
+students[2].gender = 0;
+students[2].courses = 4;
+students[2].leader = &students[0];  
+
+// Выводим адрес массива и размер массива в байтах
+cout << "Информация о массиве:" << endl;
+cout << "Адрес массива: " << &students << endl;                 
+cout << "Размер массива: " << sizeof(students) << " байт" << endl << endl; 
+
+// Выводим номер, адрес и размер структуры студента 
+cout << "Информация об элементах массива:" << endl;
+for (int i = 0; i < 3; i++) {                                      
+    cout << "Студент " << i << ":" << endl;                     
+    cout << "Адрес: " << &students[i] << endl;                
+    cout << "Размер: " << sizeof(Student) << " байт" << endl << endl; 
+}
+
+cout << "Данные о полях других студентов:" << endl; 
+
+// Выводим смещение поля имени относительно начала структуры
+cout << "Имя:" << endl;
+cout << "  Адрес: " << static_cast<void*>(students[1].name) << endl; 
+cout << "  Смещение: " << offsetof(Student, name) << endl;       
+cout << "  Размер: " << sizeof(students[1].name) << " байт" << endl; 
+cout << "  Шестнацатеричный формат: ";
+students[1].print_hex(students[1].name, sizeof(students[1].name)); 
+cout << endl << "  Двоичный формат: ";
+students[1].print_binary(students[1].name, sizeof(students[1].name)); 
+cout << endl << endl;
+
+// Выводим адрес, смещение, размер поля года
+cout << "Год:" << endl;
+cout << "  Адрес: " << &students[1].year << endl;                 
+cout << "  Смещение: " << offsetof(Student, year) << endl;      
+cout << "  Размер: " << sizeof(students[1].year) << " байт" << endl; 
+cout << "  Шестнацатеричный формат: ";
+students[1].print_hex(&students[1].year, sizeof(students[1].year)); 
+cout << endl << "  Двоичный формат: ";
+students[1].print_binary(&students[1].year, sizeof(students[1].year)); 
+cout << endl << endl;
+
+// Выводим смещение и размер поля успеваемости
+cout << "Успеваемость:" << endl;
+cout << "  Адрес: " << &students[1].average_score << endl;        
+cout << "  Смещение: " << offsetof(Student, average_score) << endl; 
+cout << "  Размер: " << sizeof(students[1].average_score) << " байт" << endl; 
+cout << "  Шестнацатеричный формат: ";
+students[1].print_hex(&students[1].average_score, sizeof(students[1].average_score)); 
+cout << endl << "  Двоичный формат: ";
+students[1].print_binary(&students[1].average_score, sizeof(students[1].average_score)); 
+cout << endl << endl;
+
+// Выводим адрес, смещение, размер указателя на старосту
+cout << "Староста:" << endl;
+cout << "  Адрес: " << &students[1].leader << endl;                 
+cout << "  Смещение: " << offsetof(Student, leader) << endl;     
+cout << "  Размер: " << sizeof(students[1].leader) << " байт" << endl; 
+cout << "  Шестнацатеричный формат: ";
+students[1].print_hex(&students[1].leader, sizeof(students[1].leader));
+cout << endl << "  Двоичный формат: ";
+students[1].print_binary(&students[1].leader, sizeof(students[1].leader)); 
+cout << endl << endl;
+
+// все элементы массива в шестнадцатеричном виде с указанием соответствия блоков байт полям структур
+cout << "Шестнадцатеричное представление структур:" << endl;
+for (int i = 0; i < 3; i++) { 
+    cout << "Студент " << i << (students[i].leader == nullptr ? " (не староста)" : " (староста, лидер - ") 
+         << (students[i].leader == nullptr ? "нет лидера" : students[i].leader->name) << ")" << endl;    
+    cout << "  Все поля: ";
+    students[i].print_hex(&students[i], sizeof(Student)); 
+    cout << endl;
+    cout << "  Имя: ";
+    students[i].print_hex(students[i].name, sizeof(students[i].name)); 
+    cout << endl;
+    cout << "  Год: ";
+    students[i].print_hex(&students[i].year, sizeof(students[i].year)); 
+    cout << endl;
+    cout << "  Успеваемость: ";
+    students[i].print_hex(&students[i].average_score, sizeof(students[i].average_score)); 
+    cout << endl;
+
+    uint8_t bit_fields = (students[i].gender << 7) | students[i].courses;  
+    cout << "  Пол и количество курсов (как байт: старший бит - пол, младшие биты - количество курсов): ";
+    students[i].print_hex(&bit_fields, sizeof(bit_fields));
+
+    cout << "  Староста: ";
+    students[i].print_hex(&students[i].leader, sizeof(students[i].leader)); 
+    cout << endl << endl;
+}
+
+return 0; 
+}
\ No newline at end of file