Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
31.05.2025
Размер:
394.11 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра ИИСТ

отчет

по практической работе №5

по дисциплине «Информационные технологии»

Тема: Классы

Студент гр. номер

ФИО

Преподаватель

Куракина Н.И

Санкт-Петербург

20__

Цель работы.

Продолжить изучение классов и перегруженных операций в среде программирования Dev C++ .

Основные теоретические положения.

Перегрузка операторов в программировании — один из способов реализации полиморфизма, заключающийся в возможности одновременного существования в одной области видимости нескольких различных вариантов применения оператора, имеющих одно и то же имя, но различающихся типами параметров, к которым они применяются.

Кроме перегрузки функций С++ позволяет организовать перегрузку операций. Механизм перегрузки операций позволяет обеспечить более традиционную и удобную запись действий над объектами. Для перегрузки встроенных операторов используется ключевое слово operator.

Синтаксически перегрузка операций осуществляется следующим образом, где ! – это знак перегружаемой операции(+,-,= и другие):

Тип значения operator ! (список параметров)

{

Тело функции;

}

Если унарная операция перегружается как функция-член, то она не должна иметь аргументов, так как в этом случае ей передается неявный аргумент-указатель this на текущий объект. Если унарная операция перегружается дружественной функцией, то она должна иметь один аргумент – объект, для которого она выполняется.

Задание.

1.Написать программу, читающую с клавиатуры десятичное целое число и выводящую битовое (двоичное) представление данного числа. Возможный алгоритм: Вводимое число 32 раза делится на 2 и определяется остаток от деления 0 или 1. Данный остаток и будет представлять один разряд в двоичном представлении. В отчете число, заданное преподавателем перевести вручную.

2. Написать программу сложения векторов в трехмерном пространстве, используя перегрузку стандартных операций. В обоих заданиях использовать классы!

Код первого задания:

#include <iostream>

#include <clocale>

using namespace std;

class Converting_bit

{

int num;

int length;

public:

Converting_bit(int d);

void output_bit();

};

Converting_bit::Converting_bit(int d)

{

int k=0;

num=d;

while (num!=0)//Нахождение длины

{

k=k+1;

num=num/2;

}

length=k-1;

num=d;

}

void Converting_bit::output_bit()

{

int i=0; int mass[length];

printf("Число %d в двоичной системе:\n",num);

while(i<=length) //запись остатков

{

mass[length-i]=num%2;

num=num/2;

i=i+1;

}

for(int i=0;i<=length;i++ )

{

printf("%d",mass[i]);

}

}

int main(){

int d;

setlocale (LC_ALL,"rus");

printf("Введите число:\n");

scanf("%d",&d);

Converting_bit P1(d);

P1.output_bit();

}

Код второго задания:

#include <iostream>

#include <clocale>

using namespace std;

class Vector{

float x,y,z;

public:

Vector(float a,float b,float c);

void output_cords();

const Vector operator+ (const Vector& num); };

Vector::Vector(float a,float b,float c)

{

x=a; y=b; z=c;

}

const Vector Vector::operator+(const Vector& num)

{

x = this->x + num.x;

y = this->y + num.y;

z = this ->z + num.z;

Vector what(x,y,z);

return what;

}

void Vector::output_cords(){

printf("Сумма векторов\n");

printf("Координата x=%.3f\n",x);

printf("Координата y=%.3f\n",y);

printf("Координата z=%.3f\n",z);}

int main(){

float a,b,c;

setlocale (LC_ALL,"rus");

printf("Введите координаты вектора x,y,z:\n");

scanf("%f%f%f",&a,&b,&c);

Vector obj1(a,b,c);

printf("Введите координаты вектора x,y,z:\n");

scanf("%f%f%f",&a,&b,&c);

Vector obj2(a,b,c);

Vector obj3=obj1+obj2;

obj3.output_cords();

}

Результаты работы

1.Вводимые для проверки числа первого задания: 56 и первые три цифры логина 234.

Рисунок 1. Пример работы первой программы.

Рисунок 2. Пример работы первой программы.

Рисунок 3. Скан чисел, переведенных в ручную.

2. Вводимые числа для первого и второго вектора: 13,4=x,1,53=y,z=3 и 17=x,6,1=y; 0=z; -1,891=x 10,6=y;23,65=z и -4,111=x, -5,6=y,7,35=z;

Рисунок 4. Пример работы второй программы.

Рисунок 5. Пример работы второй программы.

Вывод.

В проделанной работе были переведены числа в двоичную систему счисления, используя классы, а также сложили вектора, используя перегруженную операцию.

Соседние файлы в папке 5 практика