
2 семестр ФИБС / Информатика / 5 практика / FIO_P5_2_5
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ИИСТ
отчет
по практической работе №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. Пример работы второй программы.
Вывод.
В проделанной работе были переведены числа в двоичную систему счисления, используя классы, а также сложили вектора, используя перегруженную операцию.