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

Инкапсуляция. Классы и их компоненты. Объекты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ транслит http://www.cyberforum.ru/cpp-beginners/thread164582.html
ни как не пойму , как сделать чтобы к руской букве приделать другой синвол.ну типа там A=$ ну чтоб получилось когда я ввожу синволы на руском он мне переделал их на те которые я ему збил (типа транслита ) #include "stdafx.h" #include <iostream> #include"windows.h" using namespace std; void main(void) { setlocale (0,""); SetConsoleCP(1251);
C++ Класс - строка Народ, здравствуйте, есть такая задача. Определить класс - строку. в класс включить два конструктора: создание строки символов и конструктор-копия. Определить функции - члены: вывод на экран строки, нахождение самого короткого слова в строке. Может есть у кого готовое решение? http://www.cyberforum.ru/cpp-beginners/thread164563.html
Динамический список C++
Помогите решить задачу. Вчера обращалась, знаю, стыдно. ._. В общем, другая задачка и большая просьба написать её на этом уровне: ссылка удалена Слёзно прошу! Т_Т Само задание, в общем-то... Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. В составе программы описать функцию, которая находит наибольший элемент списка и его...
Замена элементов списка C++
Помогите пожалуйста написать программу. В составе программы описать функцию, которая заменяет в списке все вхождения элемента E1, значение которого введено с клавиатуры, на элемент E2, значение которого также введено с клавиатуры.
C++ Структур комплексных чисел http://www.cyberforum.ru/cpp-beginners/thread164524.html
Задание: Организовать структуру комплексных чисел и для неё реализовать операции: +, -, *, /, и нахождение сопряженного числа. Результат вывести на экран. Для демонстрации работы функции сделать меню с возможностью выбора. (это я думаю про знаки операции) вот что у меня выходит по тексту, проблема в том что, сначала компилируется все норм, и даж выводит первый запрос, потом все глючит,...
C++ Шифрование чисел Программа должна шифровать число следующим образом: заменять каждую цифру остатком от деления (цифра+7)/10. Затем написать программу дешифровки для получения исходных чисел. (Задачка взята собственно из книги Дейтела.) Первая часть затруднений не вызывает, а вот с дешифровкой не могу сообразить. Как из остатка можно получить исходное делимое? Диапазон чисел тут небольшой (получается от 7 до 16),... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
10.09.2010, 07:05     Инкапсуляция. Классы и их компоненты. Объекты
Код ужасен... Где Вы его раздобыли? Вот более правильная реализация:
arr.hpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Объявление класса iarray
 
#ifndef ARR_HPP
#define ARR_HPP
 
#include <iostream>
 
class iarray
{
 
public: // Публичные методы
    
    // Конструкторы - управляют инициализацией объектов класса
    iarray(size_t size = DEFAULT_SIZE);
    iarray(size_t size, const int* array);
    // Деструкторы - управляют зачисткой объектов класса
    ~iarray();
    
    // Ввод данных
    void setArray(int* array);
    // Вывод массива (константый метод)
    const int* getArray() const;
    // Вывод размера массива (константный метод)
    size_t size() const;
    
    // Перегруженный оператор доступа по индексу
    int& operator [] (size_t index);
    // Перегруженный дружественный оператор вывода в поток
    friend std::ostream& operator << (std::ostream& os, const iarray& rhs);
    
private: // Закрытые данные
    
    size_t  m_nSize; // Размер массива
    int*    m_pArr; // Массив
    static const size_t DEFAULT_SIZE = 10; // Значение по умолчанию для размера
};
 
#endif
arr.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Реализация класса iarray
 
#include "arr.hpp"
 
#include <stdexcept>
 
iarray::iarray(size_t size)
    : m_nSize(size)
{
    m_pArr = new int[m_nSize];
}
 
iarray::iarray(size_t size, const int* array)
    : m_nSize(size)
{
    m_pArr = new int[m_nSize];
    for(size_t i = 0; i < m_nSize; ++i)
        m_pArr[i] = array[i];
}
 
iarray::~iarray()
{
    delete[] m_pArr;
}
 
void iarray::setArray(int* array)
{
    for(size_t i = 0; i < m_nSize; ++i)
        m_pArr[i] = array[i];
}
 
const int* iarray::getArray() const
{
    return m_pArr;
}
 
size_t iarray::size() const
{
    return m_nSize;
}
 
int& iarray::operator [] (size_t index)
{
    if(index >= m_nSize) // Если индекс превышает максимально допустимый...
        throw std::runtime_error("Index is out of range"); // ...то выбрасывается исключение
    return m_pArr[index];
}
 
std::ostream& operator << (std::ostream& os, const iarray& rhs)
{
    for(size_t i = 0; i < rhs.m_nSize; ++i)
        os << "#" << i + 1 << " -> " << rhs.m_pArr[i] << std::endl;
    return os;
}
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Пример использования разработанного класса
 
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "arr.hpp"
 
int main()
{
    srand(static_cast<size_t>(time(NULL)));
    size_t sz = 15;
    iarray a1(sz);
    for(size_t i = 0; i < a1.size(); ++i)
        a1[i] = rand() % sz + sz;
    const int* a2 = a1.getArray();
    std::cout << "Generated array:\n( ";
    for(size_t i = 0; i < a1.size(); ++i)
        std::cout << a2[i] << " ";
    std::cout << ")" << std::endl;
    iarray a3(a1.size(), a2);
    std::cout << a3;
    return EXIT_SUCCESS;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru