Составление спецификаций. Изучение строковых типов данных и функций для их обработки

Страницы работы

20 страниц (Word-файл)

Содержание работы

кафедра 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 = ";

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
280 Kb
Скачали:
0