1

(768 відповідей, залишених у Організація роботи форуму)

Replace написав:

Anddep, IP-адреса динамічна?

Так!

2

(768 відповідей, залишених у Організація роботи форуму)

При реєстрації:

Прихований текст

Попередження! Наступні помилки має бути виправлено до того, як ви зможете зареєструватися:
•На протязі останньої години з вашої IP адреси вже було зареєстровано нового користувача. Для запобігання реєстраційному флудові, як мінімум одна година має минути між реєстраціями користувачів з однієї IP адреси. Вибачте за незручності.

Хоч ніхто не реєструвався!
Перевірено на декількох машинах різного розташування!

3

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

а хіба можна в класі оголошувати ось так?

static int k_to_rad;

Щодо типів значень, то вони будуть всі double

4

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

#include <iostream>
using namespace std;
class angle
{
private:
    int degree;
    int rad;
    int k_to_rad;            //коефіцієнт переведення
public:
    angle () {        //конструктор 
        this->k_to_rad = 1/57;
        this->degree = 0;
        this->rad = degree * k_to_rad;
    }
    angle (int _degree){        //конструктор
        this->k_to_rad = 1/57;
        if (_degree < 0) {
            this->degree = 0;
        }
        else {
            this->degree = _degree;
        }
        this->rad = degree * k_to_rad;
    }
    ~angle() {}                //дeструктор
    void put_k (int _k) {
        this->k_to_rad = _k;
    }
    void Initial (int _degree){    // функція для шніціалізації даних
        if (_degree < 0) {
            this->degree = 0;
        }
        else {
            this->degree = _degree;
        }
        this->rad = degree * k_to_rad;
    }
    //повернення в градусах
    int get_in_degree(){
        return this->degree;
    }
    //повернення в радіанах
    int get_in_rad(){
        return this->rad;
    }
    void operator=(angle& ROperand){
        this->degree = ROperand.degree;
        this->rad = ROperand.rad;
    }
    //перевантажений оператор додавання
    angle& operator+(angle& ROperand){
        angle* tmp = new angle();
        tmp->degree = this->degree + ROperand.degree;
        tmp->rad = this->rad + ROperand.rad;
        return *tmp;
    }
    //перевантажений оператор віднімання
    //при відємному результаті поверне 0
    angle& operator-(angle& ROperand){
        angle* tmp = new angle();
        if (this->degree - ROperand.degree < 0) {
            return 0;
        }
        else {
            tmp->degree = this->degree - ROperand.degree;
            tmp->rad = this->rad - ROperand.rad;
            return *tmp;
        }
    }
    virtual void Druk (){
        cout << "angle : \n" << "proportionality factor degree to rad : " <<  this->k_to_rad << endl;
        cout << "in degree : " << this->degree << "\tin rad : " << this->rad << endl;
    }
}

Ось, переписав.)
Щось вийшло)

5

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

Привіт!
Завдання

Прихований текст

Створити клас, що асоціюється з кутовими величинами та підтримує операції додавання,віднімання,ініціалізацію,видачу значення об'єкту в радіанах та градусах ( використайте статичні змінні та функції для збереження, вводу та виводу коефіцієнту пропорційності).

Мій скелет

Прихований текст
#include<iostream>
using namespace std;
const static double z=1;
static void Func()
{
    cout<<z;
}
class T
{
public:

    double k1,k2;

    double Sum();
    double Riz();
    static void Func();



    T::Riz()
    {
    }
    T::Sum()
    {
    }

};

int main()
{    

    Func();
    return 0;
}

Допоможіть розібратись з цим завданням!
Чи правильно я оголошую та використовую статичну функцію та змінну, бо як я зрозумів її ввести я не можу?
Як правильно написати функції ініціалізації, та видачі значення об'єкту? ( теж саме щодо градусів і радіан? це мають бути окремі ф-ції?)

6

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

int *m_pnNum1//текстове поле в яке я вводжу вхідні дані
map<int, Cube> lst;
virtual int Area()=0;
virtual int Volume()=0;

Тут проблема з передачею ключа, оскільки map це асоціативний масив, в якому потрібно передавати <ключ, значення>

7

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

koala написав:

Добре, прямим текстом: запис lst.insert(...) означає, що lst - якийсь клас (структура), який має метод insert. Не хочете говорити, яка саме - ваші проблеми, але вам ніхто тоді і не допоможе.
Те саме стосується і інших змінних. Не відмахуйтеся від запитань - і вам зможуть допомогти. Відповідатимете "на відчепися" - допомоги не буде.

Я не відповідаю "на відчепись", просто вже переглянув декілька прикладів роботи з map, пробував як в них, але проблема залишалась!
А щодо методу, то теж спробував його викликати з-під list'а але нічого не допомогло!

8

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

koala написав:

Ну тоді все просто: у типу int немає методу insert, у нього взагалі нема методів. Щоправда, компілятор про інше пише, але якщо ви кажете, що lst - це int, то підстав вам не вірити в мене нема.

Спробував переробити, не допомогло.(
не знаю навіть в чому діло?

9

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

koala написав:
Anddep написав:

Не зрозумів, щодо list і інших змінних?

Які типи змінних? Тут немає телепатів!

Так int ніби всюди!

10

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

koala написав:

А lst як проголошено, і інші змінні? Ви посилання прочитали?

Не зрозумів, щодо list і інших змінних?

Так, прочитав=)
Але ще не вступило в дію)))))

11

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

Ось, те, чого я й не міг вирішити до попередніх помилок

Прихований текст

https://pp.сайт-злодій/c403421/v403421844/b10f/4OCWT12NcrA.jpg

12

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

Bartash написав:
Anddep написав:
Прихований текст

https://pp.сайт-злодій/c403421/v403421844/b0fe/5DLrBUXodjI.jpg

Ось щодо помилок, знаю вони дитячі, але коли їх виправити, то з'являються нові й нові!

Щодо питання:
Воно полягає власне в типі map
Допоможіть правильно реалізувати його в даній задачі?

Завтра подивлюся вранці.

Прихований текст

Взагалі, варто код писати покроково, імго: шматочок - перевірив, шматочок - перевірив, скомпілював - тішишся, і далі... Так більше шансів на успіх. :)

Розумію, знаю!
Так і писав спочатку, але згодом додалось декілька різних файлів з кодом і тоді почались трабли(
Вдячний!

13

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

Прихований текст

https://pp.сайт-злодій/c403421/v403421844/b0fe/5DLrBUXodjI.jpg

Ось щодо помилок, знаю вони дитячі, але коли їх виправити, то з'являються нові й нові!

Щодо питання:
Воно полягає власне в типі map
Допоможіть правильно реалізувати його в даній задачі?

14

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

Привіт!
Є завдання:

Прихований текст

ЗАВДАННЯ
1.    Написати віконну діалогову програму, яка записує і читає з файлової бази даних текстову інформацію про об’єкти, що описують предметну область задану варіантом. Програма має відповідати наступним вимогам:
•    а) Забезпечити перевірку на коректність введення даних за допомогою механізму виключних ситуацій. При спробі введення некоректних даних відобразити на екрані відповідне повідомлення за допомогою методу MessageBox та скасувати операцію.
•    б) Для введення даних використати елемент керування типу Edit Box, а вміст файлової бази даних відобразити у елементі керування типу List Box. Позначити призначення елементів керування за допомогою групуючи контролів (Group Box).
•    в) Продублювати функції кнопок запису/читання у меню.
•    г) Передбачити можливість вибору файлу, з яким відбуватиметься робота у процесі виконання програми за допомогою діалогу вибору файлу.
•    д) Шляхом спадкування від класу CStdioFile або CFile створити власний клас, який  забезпечуватиме буферизований запис даних у файл (Запис даних спочатку здійснюється в програмний буфер. При спробі додати нову порцію даних у повний буфер спочатку має відбуватися запис всіх даних з буферу у файл, очищення буферу і лише тоді додавання цієї порції даних у порожній буфер). Буфер реалізувати за допомогою структури даних з бібліотеки STL визначеній варіантом. Розмір буферу визначається варіантом.

Потрібно використати структуру даних map.

Програма видає помилку по незрозумілих причинах!
Код кидаю в вигляді теки проекту, адже не бачу сенсу викладати тільки один файл! (якщо потрібно зроблю й це)

Прихований текст

15

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

Ось те, що зробив!
Вроді працює коректно


Ось моє вирішення!

"mutant.h"
class CAnimal {
protected:
    char *name;
public:
    CAnimal();
    CAnimal(const CAnimal&);
    CAnimal(const char*);
    virtual ~CAnimal();
    void call();
    virtual void printMassage();
    void setName(const char*);
};

class CDog: virtual public CAnimal {
protected:
    char *language;
public:
    CDog();
    CDog(const CDog&);
    CDog(const char*name,const char*language);
    CDog operator=(const CDog*);
    void call();
    void printMassage();
    void setLanguage(const char*);
    const char *getLanguage();
    virtual ~CDog();
};

class CPig: virtual public CAnimal {
protected:
    char *lag;
public:
    CPig();
    CPig(const char*name,const char*lag);
    CPig(const CPig&);
    CPig operator=(const CPig&);
    void call();
    virtual void printMassage();
    void setlag(const char*);
    const char *getlag();
    virtual ~CPig();
};

class CMutant: virtual public CPig, virtual public CDog{
private:
    char *mass;
public:
    CMutant();
    CMutant(const char*name,const char*lag,const char*language,const char*mass);
    CMutant(const CMutant&);
    ~CMutant();
    CMutant operator=(const CMutant&);
    void call();
    void printMassage();
    const char *getMassage();
    void setMassage(const char*);
    
};
"mutant.cpp"
#include <cstring>
#include <iostream>
#include "mutant.h"
using namespace std;

CAnimal::CAnimal() {
    name = new char[1];
}

void CAnimal::setName(const char* str) {
    delete[] name;
    name = new char[strlen(str)+1];
    strcpy(name, str);
}
CAnimal::CAnimal(const CAnimal &that) {
    name = new char[strlen(that.name)+1];
    strcpy(name, that.name);
}

CAnimal::CAnimal(const char *init_name) {
    
    name = new char[128];
    strcpy(name, init_name);
}

CAnimal::~CAnimal() {
    delete[] name;
}

void CAnimal::call() {
    cout << "Animal's name " << name <<endl;
}

void CAnimal::printMassage() {
    cout << "Animal's name " << name <<endl;
}

CDog::CDog() {
    language = new char[128];
    strcpy(name, "sobaka ");
    strcpy(language, "gav gav ");
}

CDog::CDog(const CDog& that) {
    delete[] language;
    language = new char[128];
    strcpy(name, that.name);
    strcpy(language, that.language);
}

CDog::CDog(const char *name,const char *language): CAnimal(name) {
    this->language = new char[128];
    strcpy(this->language, language);
}

void CDog::call() {
    CAnimal::printMassage();
    cout << "gav gav gav"<<endl;
}

void CDog::printMassage() {
    CAnimal::printMassage();
    cout << "gav gav gav"<<endl ;
}

CDog CDog::operator=(const CDog *that) {
    strcpy(this->name, that->name);
    strcpy(this->language, that->language);
    return *this;
}

void CDog::setLanguage(const char *init_lang) {
    strcpy(language, init_lang);
}

const char *CDog::getLanguage() {
    return language;
}

CDog::~CDog() {
    delete[] language;
}

CPig::CPig() {
    lag = new char[128];
    strcpy(name, "svinia ");
    strcpy(lag, "4");
}

CPig::CPig(const char *init_name,const char *lag) : CAnimal(init_name) {
    this->lag = new char[128];
    strcpy(this->lag, lag);
}

CPig::CPig(const CPig &that) {
    strcpy(this->name, that.name);
    strcpy(this->lag, that.lag);
}

void CPig::call() {
    CAnimal::printMassage();
    cout << "lags: " << lag<<endl;
}

void CPig::printMassage() {
    CAnimal::printMassage();
    cout << "lags: " << lag<<endl;
}

void CPig::setlag(const char* init_lag) {
    strcpy(lag, init_lag);
}

CPig CPig::operator=(const CPig &that) {
    strcpy(this->name, that.name);
    strcpy(this->lag, that.lag);
    return *this;
}

const char *CPig::getlag() {
    return lag;
}

CPig::~CPig() {
    delete[] lag;
}

CMutant::CMutant() {
    mass = new char[128];
    strcpy(mass, "my massage");
}

CMutant::CMutant(const char *name,const char*lag,const char*language,const char*mass):CPig(name,lag),CDog(name,language), CAnimal(name) {
    this->mass = new char[128];
    strcpy(this->mass, mass);
}

void CMutant::call() {
    CAnimal::printMassage();
    cout << "lang: "<< language << " lag: " <<lag <<" mass "<< mass << '\n';
}

void CMutant::printMassage() {
    CAnimal::printMassage();
    cout << "lang: "<< language << " lag: " <<lag <<" mass "<< mass << '\n';
}

void CMutant::setMassage(const char *init_massage) {
    strcpy(mass, init_massage);
}

const char *CMutant::getMassage() {
    return mass;
}

CMutant CMutant::operator=(const CMutant &that) {
    strcpy(this->name, that.name);
    strcpy(this->mass, that.mass);
    strcpy(this->lag, that.lag);
    strcpy(this->language, that.language);
    return *this;
}

CMutant::~CMutant() {
    delete[] mass;
}
CMutant::CMutant(const CMutant&){
}
"main.cpp"
#include "mutant.h"
#include <iostream>
#include "mutant.h"
using namespace std;

int main() {

    CAnimal *a[4];
    a[0] = new CMutant("Animals"," 2 or 4 ", "gav or hru ","mova");
    a[1] = new CDog("sobaka ","dd");
    a[2] = new CPig("svinia","4");
    a[3] = new CAnimal("Mutant");

    a[0]->printMassage();
    a[1]->printMassage();
    a[2]->printMassage();
    a[3]->printMassage();
    cout<<endl<<endl;
    a[0]->call();
    a[1]->call();
    a[2]->call();
    a[3]->call();

    delete a[0];
    delete a[1];
    delete a[2];
    delete a[3];

    return 0;
}
}

16

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

В принципі, зрозуміло!
Але для мого випадку

CDog::operator=(const CDog *that) {
    strcpy(this->name, that->name);
    strcpy(this->language, that->language);
  return *this;}

???

17

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

3.

   

 void operator=(const CPig&);
    //і подібні йому в інших класах

Чому ви вирішили, що він вертає void?

   

 T& operator = (T obj)
    {
    //some actions...
    return *this;
    }

Тобто для кожний перезавантажений оператор повинен щось повертати?

Щодо 6 пункту то leg ( ноги), можна paws ( лапи)
Та тут різниці немає!


Дякую за аналіз!

18

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

Привіт.
Задача

Прихований текст

Спроектувати (нарисувати) і реалізувати ієрархію класів, що описують предметну область «Мутант» (CMutant), що був отриманий шляхом схрещування пса Бобіка (описується класом CDog) і свині Хрюші (описується класом CPig). Класи CDog і CPig мають спільний батьківський клас CAnimal. Додаткові вимоги:
1.    Базовий клас містить мінімум одну віртуальну функцію (наприклад, яка виводить на екран текстом звук, який видає тваринка).
2.    Забезпечити механізми коректної роботи конструкторів і деструкторів.
3.    Перевантажити operator = з метою його коректної роботи.
4.    Кожен з класів має містити мінімум один член даних і 4 функції-члени.
5.    Написати main() функцію де створити об’єкт класу CMutant і продемонструвати різницю між статичним і динамічним поліморфізмом.

Ось моє вирішення!

"mutant.h"

class CAnimal {
protected:
    char *name;
public:
    CAnimal();
    CAnimal(const CAnimal&);
    CAnimal(const char*);
    virtual ~CAnimal();
    virtual void call();
    virtual void massage();
};

class CDog: virtual public CAnimal {
protected:
    char *language;
public:
    CDog();
    CDog(const CDog&);
    CDog(const char*);
    void operator=(const CDog*);
    void call();
    void massage();
    void setLanguage(const char*);
    const char *getLanguage();
    virtual ~CDog();
};

class CPig: virtual public CAnimal {
protected:
    char *lag;
public:
    CPig();
    CPig(const char*);
    CPig(const CPig&);
    void operator=(const CPig&);
    virtual void call();
    virtual void massage();
    void setlag(const char*);
    const char *getlag();
    virtual ~CPig();
};

class CMutant: public CPig, public CDog
{
private:
    char *mass;
public:
    CMutant();
    CMutant(const char*);
    CMutant(const CMutant&);
    ~CMutant();
    void operator=(const CMutant&);
    void call();
    void massage();
    const char *getMassage();
    void setMassage(const char*);
};

"mutant.cpp"

#include "mutant.h"
#include <cstring>
#include <iostream>
using namespace std;

CAnimal::CAnimal() {
    name = new char[128];
}

CAnimal::CAnimal(const CAnimal &that) {
    name = new char[128];
    strcpy(name, that.name);
}

CAnimal::CAnimal(const char *init_name) {
    name = new char[128];
    strcpy(name, init_name);
}

CAnimal::~CAnimal() {
    delete[] name;
}

void CAnimal::call() {
    cout << "Name  " << name <<endl;
}

void CAnimal::massage() {
    cout << "prosto text dlya kilkosti "<<endl;
}

CDog::CDog() {
    language = new char[128];
    strcpy(name, "sobaka ");
    strcpy(language, "gav gav ");
}

CDog::CDog(const CDog& that) {
    language = new char[128];
    strcpy(name, that.name);
    strcpy(language, that.language);
}

CDog::CDog(const char *initName) {
    language = new char[128];
    strcpy(name, initName);
    strcpy(language, "gav gav ");
}

void CDog::call() {
    cout << "sobaka " << name << '\t' << language << endl;
}

void CDog::massage() {
    cout << "gav gav gav"<<endl ;
}

void CDog::operator=(const CDog *that) {
    strcpy(this->name, that->name);
    strcpy(this->language, that->language);
}

void CDog::setLanguage(const char *init_lang) {
    strcpy(language, init_lang);
}

const char *CDog::getLanguage() {
    return language;
}

CDog::~CDog() {
    delete[] language;
}

CPig::CPig() {
    lag = new char[128];
    strcpy(name, "svinia ");
    strcpy(lag, "4");
}

CPig::CPig(const char *init_name) {
    lag = new char[128];
    strcpy(name, init_name);
    strcpy(lag, "4");
}

CPig::CPig(const CPig &that) {
    strcpy(this->name, that.name);
    strcpy(this->lag, that.lag);
}

void CPig::call() {
    cout << "admin\t" << name << '\t' << lag << '\n';
}

void CPig::massage() {
    cout << "i have lag"<<endl;
}

void CPig::setlag(const char* init_lag) {
    strcpy(lag, init_lag);
}

void CPig::operator=(const CPig &that) {
    strcpy(this->name, that.name);
    strcpy(this->lag, that.lag);
}

const char *CPig::getlag() {
    return lag;
}

CPig::~CPig() {
    delete[] lag;
}

CMutant::CMutant() {
    mass = new char[128];
    strcpy(mass, "my massage");
}

CMutant::CMutant(const char *init_massage) {
    mass = new char[128];
    strcpy(mass, init_massage);
}

void CMutant::call() {
    cout << "animal " << name << '\t' << lag << '\t'
        << language << '\t' << mass << '\n';
}

void CMutant::massage() {
    cout << mass << '\n';
}

void CMutant::setMassage(const char *init_massage) {
    strcpy(mass, init_massage);
}

const char *CMutant::getMassage() {
    return mass;
}

void CMutant::operator=(const CMutant &that) {
    strcpy(this->name, that.name);
    strcpy(this->mass, that.mass);
    strcpy(this->lag, that.lag);
    strcpy(this->language, that.language);
}

CMutant::~CMutant() {
    delete[] mass;
}

"main.cpp"

#include "mutant.h"
#include <iostream>
using namespace std;

int main() {
    CAnimal *a[4];
    a[0] = new CMutant("m");
    a[1] = new CDog("sobaka ");
    a[2] = new CPig("svinia");
    a[3] = new CAnimal("a");

    a[0]->call();
    a[1]->call();
    a[2]->call();
    a[3]->call();


    delete a[0];
    delete a[1];
    delete a[2];
    delete a[3];


    return 0;
}

Хто знається, гляньте код!
Він працює, але чи правильно(коректно)?
Бо сам до кінця не усвідомлюю всіх тонкощів, оскільки писав по прикладу з книги!

продемонструвати різницю між статичним і динамічним поліморфізмом.

Це також присутнє, але не певен чи належним чином!

19

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

Bartash,
Дякую, зрозумів!
Врахую!

20

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

Replace написав:

1. Конструктор спрацьовує неправильно. Там не потрібно оголошувати змінну.
Просто:

Sphere::Sphere(float rs)
{
   r=rs;
}

2. Видаляти об'єкт класу потрібно просто delete, а не delete[].

3. Правильно:

int main() {
// ...
return 0;
}

У мене доречі взагалі не компілювалось

1. Зробив, як Ви кажете, результат той самий(неймовірний)
2

delete[] tri;
delete [] rec;

3. Додав

int main()
...
...
...
case 3:
            {
                return 0;
            }