Загрузка...

Need help on C ++ classes.

Thread in C/C++ created by axaz08 Oct 2, 2018. 364 views

  1. axaz08
    axaz08 Topic starter Oct 2, 2018 .... 4 Apr 19, 2018
    Программа через интерфейс класса и реализацию класса.
    1- файл. Сам класс.

    Code

    //Интерфейс класса
    //Исполняемый файл
    #include <iostream>
    #include "pch.h"

    #define K1 1000.0

    class ObozPerem
    {
    private:
    double Zb, Ms, Yd, Zbp, Ot, ZbI, Zbv, ZbIv, Vp, Dmp;
    int Jt, Jt1;
    public:
    ObozPerem(int , int , double , double ,
    double , double , double , double ,
    double , double , double , double);
    void message();
    void message1();
    void setPerem(int, int, double, double, double, double, double, double, double, double, double, double);
    void getPerem();
    };
    2- файл. Реализация класса.
    Code

    //Заголовочнфй файл
    //Реализация класса

    #include <iostream>
    #include "pch.h"
    #include "ObozPerem.h"
    #pragma once
    using namespace std;

    ObozPerem::ObozPerem(int znach_Jt, int znach_Jt1, double znach_Zb, double znach_Ms,
    double znach_Yd, double znach_Zbp, double znach_Ot, double znach_ZbI,
    double znach_Zbv, double znach_ZbIv, double znach_Vp, double znach_Dmp)
    {
    setPerem(znach_Jt, znach_Jt1, znach_Zb, znach_Ms,
    znach_Yd, znach_Zbp, znach_Ot, znach_ZbI,
    znach_Zbv, znach_ZbIv, znach_Vp, znach_Dmp);
    }
    void ObozPerem::message()
    {
    cout << "Вычисления!\n";

    }
    void ObozPerem::setPerem(int znach_Jt, int znach_Jt1, double znach_Zb, double znach_Ms,
    double znach_Yd, double znach_Zbp, double znach_Ot, double znach_ZbI,
    double znach_Zbv, double znach_ZbIv, double znach_Vp, double znach_Dmp)
    {
    Zb = znach_Zb;
    Ms = znach_Ms;
    Yd = znach_Yd;
    Zbp = znach_Zbp;
    Ot = znach_Ot;
    ZbI = znach_ZbI;
    Zbv = znach_Zbv;
    ZbIv = znach_ZbIv;
    Vp = znach_Vp;
    Dmp = znach_Dmp;
    Jt = znach_Jt;
    Jt1 = znach_Jt1;

    Zbv = Zb * Zbp;
    ZbIv = ZbI / K1;
    Vp = Ms / Yd;
    Dmp = (Ms + (Ms*Ot)) / Yd;

    if (Vp = Dmp) {
    Jt = Dmp / Zbv;
    Jt1 = 0;
    }
    else
    if (Vp > Dmp) {
    Jt = Dmp / Zbv;
    Jt1 = 0;
    }
    else {
    Jt1 = (Dmp - (Zbv*(Dmp / Zbv))) / ZbI;
    }
    }
    void ObozPerem::message1()
    {
    cout << "Объем заполнения банки(л): " << Zbv << endl;
    cout << "Объем заполнения банки<индивид>(л): " << ZbIv << endl;
    cout << "Объем партии(л): " << Vp << endl;
    cout << "Действительная масса партии(кг): " << Dmp << endl;
    cout << endl;
    }
    void ObozPerem::getPerem()
    {
    cout << "Потребность в таре: " << Jt << " - обычные банки " << Jt1 << " - банки индивидуального потребления" << endl;
    }
    3- файл. Главная функция.
    Code

    //главная функция
    #include "pch.h"
    #include <iostream>
    #include "windows.h"
    #include "ObozPerem.h"
    using namespace std;

    int main()
    {setlocale(LC_ALL, "rus");
    double Zb, Ms, Yd, Zbp, Ot, ZbI, Zbv, ZbIv, Vp, Dmp;
    int Jt, Jt1;

    cout << "Введите объем банки(лит): ";
    cin >> Zb;
    cout << "Введите массу партии(кг): ";
    cin >> Ms;
    cout << "Введите удельный вес молока(кг/дм^3): ";
    cin >> Yd;
    cout << "Введите заполнение бака(%): ";
    cin >> Zbp;
    cout << "Введите значение отклонения(%): ";
    cin >> Ot;
    cout << "Введите значение заполнения индивд. банки(гр): ";
    cin >> ZbI;
    cout << endl;

    ObozPerem objObozPerem();
    objObozPerem.message();

    system("pause");
    return 0;
    }


    Проблема заключается в выводе работы класса в основную функцию. Мб что-то не так сделал. Если есть знающие, прошу помощи.
    ЗЫ. Главная функция не написана.
    Ошибка возникает в
    Code

    ObozPerem objObozPerem();
    objObozPerem.message();
    objObozPerem.message1();
    objObozPerem.getPerem()

     
  2. Andre_Yka
    Andre_Yka Oct 2, 2018 2 Jul 11, 2018
    у тебя в классе нет конструктора по умолчанию(это тот который срабатывает без переданных переменных). ты создаешь обьект
    ObozPerem, но не передаешь ему переменные записанные из консоли. По сути такое не должно компилироваться даже.
     
  3. axaz08
    axaz08 Topic starter Oct 2, 2018 .... 4 Apr 19, 2018
    Да, исправил.
    заменил тут:
    Code

    class ObozPerem
    {
    private:
    double Zb, Ms, Yd, Zbp, Ot, ZbI, Zbv, ZbIv, Vp, Dmp;
    int Jt, Jt1;
    public:
    ObozPerem(double, double,
    double, double, double, double);
    void message1();
    void setPerem(double, double, double, double, double, double);
    void getPerem();
    };

    ...
    Code

    ObozPerem::ObozPerem(double znach_Zb, double znach_Ms,
    double znach_Yd, double znach_Zbp, double znach_Ot, double znach_ZbI)
    {
    setPerem(znach_Zb, znach_Ms, znach_Yd, znach_Zbp, znach_Ot, znach_ZbI);
    }
    void ObozPerem::setPerem(double znach_Zb, double znach_Ms,
    double znach_Yd, double znach_Zbp, double znach_Ot, double znach_ZbI)

    ...и тут.
    Code

    int main()
    {
    setlocale(LC_ALL, "rus");
    double Zb, Ms, Yd, Zbp, Ot, ZbI;

    cout << "Введите объем банки(лит): ";
    cin >> Zb;
    cout << "Введите массу партии(кг): ";
    cin >> Ms;
    cout << "Введите удельный вес молока(кг/дм^3): ";
    cin >> Yd;
    cout << "Введите заполнение бака(%): ";
    cin >> Zbp;
    cout << "Введите значение отклонения(%): ";
    cin >> Ot;
    cout << "Введите значение заполнения индивд. банки(гр): ";
    cin >> ZbI;
    cout << endl;
    ObozPerem objObozPerem(Zb, Ms, Yd, Zbp, Ot, ZbI);
    objObozPerem.message1();
    objObozPerem.getPerem();
     
  4. axaz08
    axaz08 Topic starter Oct 2, 2018 .... 4 Apr 19, 2018
    И не много вычисления подредактировал. Спасибо)
     
Loading...
Top