#include <iostream>
#include <ostream>
 
 
class Array {
public:
    explicit Array(const std::size_t size): size{size}, data{new int[size]} {}
    Array(const std::initializer_list<int> &list): size{list.size()}, data{new int[list.size()]} {
        std::copy(list.begin(), list.end(), data);
    }
    // rule of three:
    // copy constructor
    Array(const Array &other): size{other.size}, data{new int[other.size]} {
        std::copy(other.data, other.data + other.size, data);
    }
    // copy assignment
    Array &operator=(const Array &other) {
        if (this != &other) {
            delete[] data;
            this->size = other.size;
            this->data = new int[other.size];
            std::copy(other.data, other.data + other.size, data);
        }
        return *this;
    }
    // destructor
    virtual ~Array() {
        delete[] data;
    }
    int operator[](std::size_t i) const {
        return data[i];
    }
    int &operator[](std::size_t i) {
        return data[i];
    }
    std::size_t getSize() const {
        return size;
    }
private:
    std::size_t size;
    int *data;
};
 
// prefix
Array &operator++(Array &array) {
    for (std::size_t i = 0; i < array.getSize(); ++i) {
        ++array[i];
    }
    return array;
}
 
// postfix
Array operator++(Array &array, int) {
    Array temp{array};
    ++array;
    return temp;
}
// prefix
Array &operator--(Array &array) {
    for (std::size_t i = 0; i < array.getSize(); ++i) {
        --array[i];
    }
    return array;
}
 
// postfix
Array operator--(Array &array, int) {
    Array temp{array};
    --array;
    return temp;
}
 
std::ostream &operator<<(std::ostream &out, const Array &array) {
    for (std::size_t i = 0; i < array.getSize(); ++i) {
        out << array[i] << " ";
    }
    return out;
}
 
std::istream &operator>>(std::istream &in, Array &array) {
    for (std::size_t i = 0; i < array.getSize(); ++i) {
        in >> array[i];
    }
    return in;
}
 
int main() {
 
    Array c{1, 2, 3, 4, 5};
 
    std::cout << c << std::endl;
    std::cout << c++ << std::endl;
    std::cout << c << std::endl;
    std::cout << ++c << std::endl;
    std::cout << c << std::endl;
    std::cout << c-- << std::endl;
    std::cout << c << std::endl;
    std::cout << --c << std::endl;
 
 
    return 0;
}

Вибачте ось код

Добрий день,є ось таке завданнячко:створіть клас Масив із конструкторами, деструктором та перевантаженими операторами [], =, ++, -- (збільшення та зменшення на одиницю всіх елементів масиву), <<, >>. Продемонструйте роботу із створеним масивом.
Ось код ,а питання полягає в тому ,як можно "простіше написати цей код"

#include <iostream>
#include <ostream>
using namespace std;
class Array {
public:
    explicit Array(const std::size_t size) : size{ size }, data{ new int[size] } {}
    Array(const Array &other) : size{ other.size }, data{ new int[other.size] } {
        for (int i = 0; i < other.size; ++i) {
            data[i] = other.data[i];
        }
    }
    // copy assignment
    Array &operator=(const Array &other) {
        if (this != &other) {
            delete[] data;
            this->size = other.size;
            this->data = new int[other.size];
            for (int i = 0; i < other.size; ++i) {
                data[i] = other.data[i];
            }
        }
        return *this;
    }
    // destructor
    virtual ~Array() {
        delete[] data;
    }
    int operator[](size_t i) const {
        return data[i];
    }
    int &operator[](size_t i) {
        return data[i];
    }
    size_t getSize() const {
        return size;
    }
private:
    size_t size;
    int *data;
};

// prefix
Array &operator++(Array &array) {
    for (size_t i = 0; i < array.getSize(); ++i) {
        ++array[i];
    }
    return array;
}

// postfix
Array operator++(Array &array, int) {
    Array temp{ array };
    ++array;
    return temp;
}
// prefix
Array &operator--(Array &array) {
    for (size_t i = 0; i < array.getSize(); ++i) {
        --array[i];
    }
    return array;
}

// postfix
Array operator--(Array &array, int) {
    Array temp{ array };
    --array;
    return temp;
}

std::ostream &operator<<(ostream &out, const Array &array) {
    for (size_t i = 0; i < array.getSize(); ++i) {
        out << array[i] << " ";
    }
    return out;
}

std::istream &operator>>(istream &in, Array &array) {
    for (size_t i = 0; i < array.getSize(); ++i) {
        in >> array[i];
    }
    return in;
}

int main() {


    
    cout << c << std::endl;
   cout << c++ << std::endl;
    cout << c << std::endl;
    cout << ++c << std::endl;
    cout << c << std::endl;
    cout << c-- << std::endl;
    cout << c << std::endl;
    cout << --c << std::endl;


    return 0;
}

83

(4 відповідей, залишених у C++)

Справа в тому що ваша порада не спрацювала,я напевно скористаюсь порадою koala та просто спробую забити

84

(4 відповідей, залишених у C++)

Доброго вечору,я програма яка бере текст с файлу обробляє його,але замість літери і виводиться ?,підскажіть як це виправити?

85

(62 відповідей, залишених у C++)

Добре,тільки в мене  чомусь,при виході буква і виводиться як ? із чим нічого не можу поробити

86

(62 відповідей, залишених у C++)

Тему закрито)

87

(62 відповідей, залишених у C++)

Як можна використати формулу для кожного символу,в ції программі

#include <iostream>
#include <string>
#include<fstream>
using namespace std;
void f4(string s) {

    for (int i = 0; i < s.length(); ++i) {
        s[i] = (char)tolower(s[i]);
    }

    string  s1;
    s1 = s;
    int n = s.size(), n1 = n, count;

    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (s[i] == s[j])
            {
                for (int k = j; k < n - 1; k++)
                    s[k] = s[k + 1];
                n--;
                j--;
            }


    struct Litera {
        char symbol;
        int count;
    };

    Litera *litera = new Litera[n1]; 

    for (int i = 0; i < n; i++)
    {
        count = 0;
        for (int j = 0; j < n1; j++)

            if (s[i] == s1[j]) count++;
        litera[i].symbol = (char)s[i];
        litera[i].count = count;
        //cout << s[i] << " - " << count << "\n";
    }

    Litera temp; 

    for (int i = 0; i < n1 - 1; i++)
    {
        for (int j = i + 1; j < n1; j++)
        {
            if (litera[i].count < litera[j].count)
            {
                temp = litera[i];
                litera[i] = litera[j];
                litera[j] = temp;
            }
        }
    }

    for (int i = 0; i < n1; ++i) {
        if (litera[i].count > 0) cout << litera[i].symbol << " - " << litera[i].count << endl;
    }
    delete[] litera;
}

int main()
{
    setlocale(LC_ALL, "Ukrainian");
    string s, text;
    ifstream in("E:\\1.txt");
    while (getline(in, s)) text += s;
    f4(text);
    return 0;
}

88

(62 відповідей, залишених у C++)

Я не знаю де ваші штани ,пане

89

(62 відповідей, залишених у C++)

Ну допоможіть будь ласонькаа

90

(62 відповідей, залишених у C++)

Мені потрібно розрахувати по тій формулі

91

(62 відповідей, залишених у C++)

Я начебто зробила але тепер не розумію як для кожного символа порахувати інформативність повідомлення по ції формуліhttps://replace.org.ua/uploads/images/11693/7e7efdb390d310fe59b5357f8c3c09ae.png ,а ось сам код

#include <iostream>
#include <string>
#include<fstream>
using namespace std;
void f4(string s) {

    for (int i = 0; i < s.length(); ++i) {
        s[i] = (char)tolower(s[i]);
    }

    string  s1;
    s1 = s;
    int n = s.size(), n1 = n, count;

    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (s[i] == s[j])
            {
                for (int k = j; k < n - 1; k++)
                    s[k] = s[k + 1];
                n--;
                j--;
            }


    struct Litera {
        char symbol;
        int count;
    };

    Litera *litera = new Litera[n1]; 

    for (int i = 0; i < n; i++)
    {
        count = 0;
        for (int j = 0; j < n1; j++)

            if (s[i] == s1[j]) count++;
        litera[i].symbol = (char)s[i];
        litera[i].count = count;
        //cout << s[i] << " - " << count << "\n";
    }

    Litera temp; 

    for (int i = 0; i < n1 - 1; i++)
    {
        for (int j = i + 1; j < n1; j++)
        {
            if (litera[i].count < litera[j].count)
            {
                temp = litera[i];
                litera[i] = litera[j];
                litera[j] = temp;
            }
        }
    }

    for (int i = 0; i < n1; ++i) {
        if (litera[i].count > 0) cout << litera[i].symbol << " - " << litera[i].count << endl;
    }
    delete[] litera;
}

int main()
{
    setlocale(LC_ALL, "Ukrainian");
    string s, text;
    ifstream in("E:\\1.txt");
    while (getline(in, s)) text += s;
    f4(text);
    return 0;
}

92

(62 відповідей, залишених у C++)

Не зрозуміло,допоможете?)

93

(62 відповідей, залишених у C++)

Не дуже розумію,як це зробити?
І як можна зробити щоб наприклад П і п рахувало як одну букву

94

(62 відповідей, залишених у C++)

Так читає і ,а пише ?

95

(62 відповідей, залишених у C++)

Тобто літеру і ніяк не можна "проявити"?
І якщо можна можете на коді показати як відсортувати,просто не дуже зрозуміла,що ви маєте на увазі

96

(62 відповідей, залишених у C++)

Є ось такий код,по-перше він чомусь не читає букву і ,замість неї пише ?,і сприймає наприклад П і п,як дві різні букви,ще не розумію як відсортувати за спаданням,ось код

#include <iostream>
#include <string>
#include<fstream>
using namespace std;
void f4(string s) {
    string  s1;
    s1 = s;
    int n = s.size(), n1 = n, count;

    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (s[i] == s[j])
            {
                for (int k = j; k < n - 1; k++)
                    s[k] = s[k + 1];
                n--;
                j--;
            }

    for (int i = 0; i < n; i++)
    {
        count = 0;
        for (int j = 0; j < n1; j++)
            if (s[i] == s1[j]) count++;
        cout << s[i] << " - " << count << "\n";
    }
}

int main()
{
    setlocale(LC_ALL, "Ukrainian");
    string s;
    ifstream in("E:\\1.txt");
    while (getline(in, s)) f4(s);
    return 0;
}

97

(62 відповідей, залишених у C++)

Я зробила таку програму але ,тепер в мене питання я зробити щоб текст считувався з файлу

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s, s1;
    cout << "String:\n";
    getline(cin, s);

    s1 = s;
    int n = s.size(), n1 = n, count;

    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
            if (s[i] == s[j])
            {
                for (int k = j; k < n - 1; k++)
                    s[k] = s[k + 1];
                n--;
                j--;
            }

    for (int i = 0; i < n; i++)
    {
        count = 0;
        for (int j = 0; j < n1; j++)
            if (s[i] == s1[j]) count++;
        cout << s[i] << " - " << count << "\n";
    }

    system("pause");
    return 0;
}

98

(62 відповідей, залишених у C++)

Я зрозуміла,дякую

99

(62 відповідей, залишених у C++)

Ну ви можете хоча б навести що потрібно зробити

100

(62 відповідей, залишених у C++)

Допоможете?