Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Организовать арифметику класса знает кто как? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Комплексное задание http://www.cyberforum.ru/cpp-beginners/thread1036767.html
1) Створіть клас "Пара чисел", у області даних (protected) якого містяться два дійсних числа і визначені наступні методи: конструктор, віртуальна функція виводу чисел на екран. 2) Створіть клас...
C++ Как добавить нули #include <iostream> #include<iomanip> using namespace std; template <class SORT> void myclass(SORT **a, const int n, int count); int main() { http://www.cyberforum.ru/cpp-beginners/thread1036765.html
Наибольшая общая подпоследовательность C++
Требуется вывести наибольшую общую подпоследовательность для двух наборов чисел (длины n и m). Мое решение не проходит половину тестов. Как исправить? #include <iostream> using namespace std;...
C++ Класс Date, алгоритм вычитания
Помогите разработать алгоритм по вычитанию одной даты из другой для моего класса. Методы сложения дат сделал, метод по прибавлению к дате дней через перегруженный оператор тоже сделал, а по вычитаю...
C++ Определить, является ли заданная квадратная матрица http://www.cyberforum.ru/cpp-beginners/thread1036759.html
Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали.
C++ Кому не трудно, нужна идея как сделать проще Всем добра! собственно вот задание Дана целочисленная матрица A(M,N). Продублировать в матрице каждый столбец, являющийся перестановкой натуральных чисел от 1 до М. т.е. что нужно сделать... подробнее

Показать сообщение отдельно
Мария1501
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 29

Организовать арифметику класса знает кто как? - C++

11.12.2013, 02:06. Просмотров 204. Ответов 0
Метки (Все метки)

Как это сделать поможет кто-нибудь?
Организовать арифметику класса ( сложение вычитание и сравнение) в виде именованных функций, сохраняющих результат в объекте «this».

Дополнить класс следующими методами:
- перегрузить операции: ввода-вывода, сложение, вычитание, отношения (<, >, <=, >=, ==, !=) , индексации (с проверкой выхода за границу индексов);
- разработать конструктор копий и перегрузить операцию присваивания для осуществления неповерхностного копирования

Дополнить класс виртуальными функциями.

Дополнить класс производным классом.

Разработать шаблон класса для работы со строкам.
Тип информационного поля элемента списка соответствует типовому параметру шаблона.
Должны быть предусмотрены методы:
1. Конструкторы
a. По умолчанию
b. По значению информационного поля
c. Копий
2. Добавить
3. Найти
4. Удалить
5. Деструктор
6. Print
7. добавление с помощью операции сложения
8. операция вывода в поток .

Продемонстрировать работу класса на int, double и строках.


Код
#include <cstdlib>
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
class String
{
private:
    char* str;
    int n; 
public:
    String(char* string = "")
    {
        n = strlen(string);
        str = new char[n + 1];
        strcpy(str, string);
    }
 
    String(char* string, size_t size)  //конструктор, позволяющий создать строку из size символов
    {
        n = size;
        str = new char[n + 1];      
        strncpy(str, string, n);
        if (strlen(string) > size)
             str[n] = '\0';
    }
 
    ~String()
    {
        if (str)
        delete [] str;
    }
 
    void print()
    {
        std::cout << str << endl;
    }
 
    int  getnum()const //кол-во символов в строке
    {
        return n;
    }
 
    char& getchar(int n) // символ из позиции n
    {
          
        return str[n - 1];
        
    }
 
    void upper()  // в верхний регистр
    {
        for (int i = 0; i < n; i++)
            str[i] = toupper((unsigned char)str[i]);
    }
 
    int  punctuation() const // кол-во знаков препинания
    {
        int count = 0;
        for (int i = 0; i < n; i++)
        if (ispunct((unsigned char)str[i]))
            count++;
        return count;
    }
};
 
int main()
{  
    setlocale(0, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    char s[255];
    cin.getline(s, 255);
    String str(s);
    
    str.upper();
    str.print();
    str.getchar(1) = 'R';
    
 
    cout << str.getnum() << endl;
    cout << str.punctuation() << endl;
    cout << str.getchar(1) << endl;
 
    system("PAUSE");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru