Загрузка...

Нужна помощь по классам C++.

Тема в разделе C/C++ создана пользователем axaz08 2 окт 2018. 360 просмотров

Загрузка...
  1. axaz08
    axaz08 Автор темы 2 окт 2018 .... 4 19 апр 2018
    Программа через интерфейс класса и реализацию класса.
    1- файл. Сам класс.

    Код

    //Интерфейс класса
    //Исполняемый файл
    #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- файл. Реализация класса.
    Код

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

    #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- файл. Главная функция.
    Код

    //главная функция
    #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;
    }


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

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

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

    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();
    };

    ...
    Код

    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)

    ...и тут.
    Код

    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 Автор темы 2 окт 2018 .... 4 19 апр 2018
    И не много вычисления подредактировал. Спасибо)
     
Top