кафедра 304
Лабораторная работа № 6
по предмету «Программирование»
Выполнила студентка 315 гр.
Старцева А.В.
Проверила доц. каф. 304
Бакуменко Н.С.
______________________
Цель работы:
Приобретение навыков в составлении спецификаций.
Изучение строковых типов данных и функций для их обработки.
Изучение классов для их обработки.
Постановка задачи:
По своей спецификации реализовать методы созданного класса, а также
методы родительского абстрактного класса. – За сделанную правильно спецификацию
и методы +1 балл.
Написать комментарии к программе +1 балл.
Оформить отчёт, включающий текст основной программы и результаты расчета.
Условие:
У=
Книга: автор публикации; название публикации; количество страниц; год издания.
Найти: Отсортировать
массив в порядке убывания
года издания.
Даны два слова. Верно ли, что первое слово начинается на ту же, на которую заканчивается второе слово.
Дано слово. Определить число букв о в нем.
Дано предложение. Заменить в нем все вхождения буквосочетания ах на ух.
Дан текст. Определить количество цифр в нем
Кодпрограммы:
CParent.h
#pragma once
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
class CParent
{
public:
CParent(void);
virtual void Show(){};//Виртуальная функция вывод результата на экран
virtual void InputData()=0;//Чистая виртуальная функция
virtual void SaveToFile(char*){};//Виртуальная функция сохранения в файл
virtual void ReadFromFile(char*){};//Виртуальная функция считывания с файла
virtual ~CParent(void){};//Виртуальный деструктор(чтобы в классах наследниках также вызывался деструктор)
};
CParent.cpp
#include "StdAfx.h"
#include "Parent.h"
CParent::CParent(void)
{
}
CCalc.h
#pragma once
#include "parent.h"
class CCalc :
public CParent
{
public:
CCalc(void);//конструктор по умолчанию
CCalc(char *c);//конструктор считывания с файла
CCalc(int a, int b, double c, double d);// конструктор с данными
void Show();//Функция вывод результата на экран
void InputData();//Функция считывания с клавиатуры
void SaveToFile(char*);//Функция сохранения в файл
void ReadFromFile(char*);//Функция считывания с файла
~CCalc(void);
private:
double DoIt(int a, int b, double c, double d);//Функция вычисления результата
int *A,*B;//переменные типа указатель на int
double *C,*D;//переменная типа указатель на double
};
CCalc.cpp
#include "StdAfx.h"
#include "Calc.h"
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
char *DEL_NOL="Деленеие на ноль не возможно. Извините.\n";
char *LOG_NOL="Логарифм нуля не существует\n";
char *LOG_OTR="Логарифма отрицательного числа не существует\n";
CCalc::CCalc(void)//конструктор по умолчанию
{
A = new int;//Выделяем память под переменную
*A = 0;
B = new int;//Выделяем память под переменную
*B = 0;
C = new double;//Выделяем память под переменную
*C = 0;
D = new double;//Выделяем память под переменную
*D = 0;
}
CCalc::CCalc(char *FileName)//конструктор считывания с файла
{
A = new int;//Выделяем память под переменную
*A=0;
B = new int;//Выделяем память под переменную
*B = 0;
C = new double;//Выделяем память под переменную
*C=0;
D = new double;//Выделяем память под переменную
*D=0;
ReadFromFile(FileName);//вызов считывания с файла
}
CCalc::CCalc(int a, int b, double c, double d)// конструктор с данными
{
A = new int;//Выделяем память под переменную
*A=a;
B = new int;//Выделяем память под переменную
*B = b;
C = new double;//Выделяем память под переменную
*C=c;
D = new double;//Выделяем память под переменную
*D=d;
}
double CCalc::DoIt(int a,int b, double c, double d)//функция подсчитывания результата с помощью явной передачи переменных
{
double rez=0;//Переменная для хранения результата
try
{
double znam = 0, chis = 0; //разбиваем наше вырожение на числитель и знаменатель
if(d == 0) throw LOG_NOL; //Выводит ошибку если логарифм равен нулю
if(d < 0) throw LOG_OTR; //Выводит ошибку если логарифм отрицательного числа
if(d - a + b == 0) throw DEL_NOL; //Выводит ошибку если знаменатель равен нулю
chis = 2*c + log(d)*51; //Вычисление числителя
znam = d - a + b; //Вычисление знаменателя
rez = chis / znam; //Вычисление результата
}
catch(char *ERROR)// Отлавливаем ошибку
{
cout<<"Произошла ошибка: "<<ERROR;
}
catch(...)//Непредвиденная ошибка, абсолютный перехватчик
{
cout<<"Непредвиденная ошибка"<<endl;
}
return rez;//Возвращет значение
}
void CCalc::Show()//Функция вывод результата на экран
{
cout<<"Результат выражения = "<<DoIt(*A,*B,*C,*D)<<endl;
}
void CCalc::InputData()//Функция считывания с клавиатуры
{
cout<<"Введите пожалуйста число A типа int = ";
cin>>*A;
cout<<"Введите пожалуйста число B типа double = ";
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.