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

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

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

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

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

Кафедра ИИСТ

отчет

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

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

Тема: Перегруженные конструкторы

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

ФИО

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

Куракина Н.И

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

20__

Цель работы.

Продолжить изучение классов в языке программирования С++ и освоить навыки работы с перегруженными конструкторами.

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

Перегрузка конструкторов очень схожа с перегрузкой функций. Конструкторов в определяемом классе может быть несколько – по мере необходимости. Они должны иметь одинаковое имя, идентичное имени класса и обязательно должны отличаться сигнатурой. При каждом объявлении объекта класса надо применять соответствующий определённым конструкторам способ объявления. Конструктор можно перегружать столько раз, сколько посчитаете нужным. Деструктор не может быть перегружен, так как не имеет параметров. Конструктор по умолчанию, не имеющий формальных параметров, будет создан автоматически только если явно не определён ни один конструктор. У конструктора, как и у обычных функций в С++, могут быть значения аргументов по умолчанию.

Задание.

Написать программу установки и вывода даты, используя понятие класса. По введенной дате определите время года и номер декады месяца. Предусмотреть:

  • Возможность ввода даты: тремя числами (день, месяц и год), одним числом (вводим день, месяц-4 и год 2020) и без параметров (01.01.2000). При помощи перегруженного конструктора.

  • Определение времени года и декады месяца осуществить в виде отдельных функций членов.

Создать как минимум три объекта класса при помощи разных конструкторов. Один объект – с датой вашего рождения. Применить ко всем объектам функции определения времени года и декады месяца.

Индивидуальное задание: Создать функцию-член, которая по вводимой дате определяет : Из двух вводимых дат определить самую раннюю дату.

Код обычного задания:

#include <iostream>

#include <locale.h>

using namespace std;

class date

{

int day, month, year;

public:

date(int f,int s,int t);

date(int f);

date();

void give();

void time_year();

void dekad_poisk();

int giverano();

};

date::date(void)

{

day=01;

month=01;

year=2001;

}

date::date(int f,int s,int t)

{

day=f;

month=s;

year=t;

}

date::date(int f)

{

year=2020;

month=4;

day=f;

}

void date::give()

{

printf("День: %d Месяц: %d Год: %d\n",day , month, year);

}

void date::time_year()

{

if (((month)==11)||((month)==12)||((month<=3)&&((month)>=1)))

{

printf("Сейчас Зима\n");

}

else

{

if((((month)>=6)&&((month)<=8)))

{

printf(“Сейчас лето\n");

}

else

{

if(((month)==9)||((month)==10))

{

printf(“Сейчас осень\n");

}

else

{

printf("Сейчас весна\n");

}

}

}

}

void date::dekad_poisk()

{

if (((day)>=1)&&((day)<=10))

{

printf("Сейчас первая декада месяца\n");

}

else

{

if (((day)>=11)&&((day)<=20))

{

printf("Сейчас вторая декада месяца\n");

}

else

{

printf(“Сейчас третья декада месяца\n");

}

}

}

int date::giverano()

{

int per;

per= (year*10000)+(month*100)+day;

return per;

}

int main()

{

setlocale(LC_ALL, "rus");

int f,s,t;

date ob0;

ob0.give();

ob0.time_year();

ob0.dekad_poisk();

printf("Введите вашу дату в форме – день, месяц, год:\n");

scanf("%d%d%d", &f,&s,&t);

date obp(f,s,t);

obp.give();

obp.time_year();

obp.dekad_poisk();

printf("Введите день \n");

scanf("%d",&f);

date ob2(f);

ob2.give();

ob2.time_year();

ob2.dekad_poisk();

printf("Введите вашу дату вашего дня рождения:\n");

scanf("%d%d%d", &f,&s,&t);

date drs(f,s,t);

drs.give();

drs.time_year();

drs.dekad_poisk();

}

Код индивидуального задания:

#include <iostream>

#include <locale.h>

using namespace std;

class date

{

int day, month, year;

public:

date(int f,int s,int t);

date(int f);

date();

void give();

void time_year();

void dekad_poisk();

int giverano();

};

date::date(void)

{

day=01;

month=01;

year=2001;

}

date::date(int f,int s,int t)

{

day=f;

month=s;

year=t;

}

date::date(int f)

{

year=2020;

month=4;

day=f;

}

void date::give()

{

printf("День: %d Месяц: %d Год: %d\n",day , month, year);

}

void date::time_year()

{

if (((month)==11)||((month)==12)||((month<=3)&&((month)>=1)))

{

printf("Сейчас Зима\n");

}

else

{

if((((month)>=6)&&((month)<=8)))

{

printf("Сейчас лето\n");

}

else

{

if(((month)==9)||((month)==10))

{

printf("Сейчас осень\n");

}

else

{

printf("Сейчас весна\n");

}

} }}

void date::dekad_poisk(){

if (((day)>=1)&&((day)<=10))

{

printf("Сейчас первая декада месяца\n");

}

else{

if (((day)>=11)&&((day)<=20))

{

printf("Сейчас вторая декада месяца\n");

}

else

{

printf("Сейчас третья декада месяца\n");

} }}

int date::giverano()

{

int per;

per= (year*10000)+(month*100)+day;

return per;

}

int main() {

setlocale(LC_ALL, "rus");

int f,s,t;

date ob0;

ob0.give();

ob0.time_year();

ob0.dekad_poisk();

printf("Введите вашу дату в форме - день, месяц, год:\n");

scanf("%d%d%d", &f,&s,&t);

date obp(f,s,t);

obp.give();

obp.time_year();

obp.dekad_poisk();

printf("Введите день \n");

scanf("%d",&f);

date ob2(f);

ob2.give();

ob2.time_year();

ob2.dekad_poisk();

printf("Введите вашу дату вашего дня рожденья - день, месяц, год:\n");

scanf("%d%d%d", &f,&s,&t);

date drs(f,s,t);

drs.give();

drs.time_year();

drs.dekad_poisk();

printf("Введите первую дату в форме – день,месяц, год:\n");

scanf("%d%d%d", &f,&s,&t);

date individ(f,s,t);

printf("Введите вторую дату в форме – день,месяц, год:\n");

scanf("%d%d%d", &f,&s,&t);

date individ1(f,s,t);

if ((individ.giverano())>((individ1.giverano())))

{

individ1.give();

}

else

{

individ.give();

}

}

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

Для теста программы были созданы объекты: ob0(без параметров),obp( с тремя параметрами-26.12.1991), ob2( с одним параметром-6),drs( дата моего рожденья). Для индивидуального задания: individ( три параметра – 5.10.1996) и individ1(три параметра – 14.7.1996).

Результат работы общего кода.

Результат работы индвидуального задания.

Вывод

В данной лабораторной работе были закреплены навыки работы с классами в программной среде Dev C++ и с перегруженными конструкторами.

12

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