Академический Документы
Профессиональный Документы
Культура Документы
ЛАБОРАТОРНАЯ РАБОТА №1 - Структура - механизм абстракции
ЛАБОРАТОРНАЯ РАБОТА №1 - Структура - механизм абстракции
ОТЧЁТ
О ВЫПОЛНЕНИИ ЛАБОРАТОРНОЙ РАБОТЫ
по предмету ООП
Проверил Митителу В.
Кишинев,2023
Контрольные вопросы:
struct Book{
// определение полей структуры
char *author;
char *title;
int year;
int pages;
};
Структура -это тип данных,который содержит в себе типы данных разного вида.
struct circle a, b, c;
struct book mybook;
Каждая переменная типа circle содержит четыре элемента (или поля) — x, y, dia, color.
Можно сказать, что они представляют собой вложенные переменные. Причем эти
переменные разных типов. Таким образом переменная-структура позволяет
объединить под одним именем ряд разнородных данных.
struct Company
{
Employee CEO; // Employee - это структура внутри структуры Company
int numberOfEmployees;
};
Company myCompany;
Вариант 8
a)
код :
#include <iostream>
#include <cstring>
struct Book {
char* title;
char* author;
char* publisher;
int volume;
int year;
};
void setBookData(Book& book, const char* title, const char* author, const char* publisher,
int volume, int year) {
book.title = new char[strlen(title) + 1];
strcpy(book.title, title);
book.volume = volume;
book.year = year;
}
void changeBookData(Book& book, const char* title, const char* author, const char*
publisher, int volume, int year) {
delete[] book.title;
book.title = new char[strlen(title) + 1];
strcpy(book.title, title);
delete[] book.author;
book.author = new char[strlen(author) + 1];
strcpy(book.author, author);
delete[] book.publisher;
book.publisher = new char[strlen(publisher) + 1];
strcpy(book.publisher, publisher);
book.volume = volume;
book.year = year;
}
int main() {
Book book1;
setBookData(book1, "The Great Gatsby", "F. Scott Fitzgerald", "Scribner", 180, 1925);
Book book2;
setBookData(book2, "To Kill a Mockingbird", "Harper Lee", "J. B. Lippincott & Co.", 281,
1960);
// Freeing memory
delete[] book1.title;
delete[] book1.author;
delete[] book1.publisher;
delete[] book2.title;
delete[] book2.author;
delete[] book2.publisher;
return 0;
}
результат вывода на консоли:
Структура кода :
В начале включены необходимые заголовочные файлы (iostream и cstring).
Определена структура Book, содержащая переменные-члены для хранения названия,
автора, издателя, тома и года издания книги. Название, автор и издатель
представлены в виде символьных указателей (char*), а том и год - в виде целых чисел.
Выводы:
b)
#include <iostream>
struct Vector {
short* elements;
int size;
};
int main() {
int size;
std::cout << "Enter the size of the vector: ";
std::cin >> size;
Vector vector1;
initialize(vector1, size);
Vector vector2;
initialize(vector2, size);
std::cout << "Sum of even elements in vector 1: " << sum1 << std::endl;
std::cout << "Sum of even elements in vector 2: " << sum2 << std::endl;
deleteVector(vector1);
deleteVector(vector2);
return 0;
}
Далее определяется структура под названием "Vector". Эта структура имеет два
члена: elements, который является указателем на массив коротких целых чисел, и size,
который представляет собой размер вектора.
initialize(Vector& vector, int size): Эта функция принимает в качестве параметров объект
Vector и целое число size. Она динамически выделяет память под массив элементов с
помощью ключевого слова new и присваивает размер члену size вектора.
access(Vector& vector, int index): Эта функция принимает в качестве параметров объект
Vector и индекс и возвращает ссылку на элемент по указанному индексу в массиве
элементов.
Выводы:
В целом данный код демонстрирует использование struct для хранения и
манипулирования массивами коротких целых чисел в языке C++. Показано
динамическое выделение памяти, работа с массивами и основные операции ввода-
вывода.