Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
#1

Проблемы с использованием класса - C++

22.08.2011, 20:21. Просмотров 1030. Ответов 18
Метки нет (Все метки)

Задача
Водителям не безразличен пробег их авто. Один водитель записал свои данные о нескольких заправках, записывая пройденные км и число залитых в бак литров бензина
Разработайте программу, которая используя оператор while вводила бы пробег в км. и объём бензина в каждой заправке( пока не будет введено контрольное значение "-1" ).
Программа должна показывать общий пробег и сколько потрачено бензина


Я реализовал интерфейс и класс, а как задействовать в самом цикле что то не могу понять
Ведь если я напишу в main.cpp так savings One(2,16);
То у меня уже будут введены значения ...

Помогите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class savings
{
private:
    float Run; // Пробег в километрах
    float Gasoline; // Число залитых литров бензина
    float GenRun; // Всего литров
    float GenGasoline; // Всего бензина
 
savings(float Run,float Gasoline);//Конструктор
 
float getRun();
float getGasoline();
float getGenRun();
float getGenGasoline();
void setRun(float);
void setGasoline(float);
};
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
#include "stdafx.h"
#include <iostream>
#include "lang.h"
#include "savings.h"
 
using namespace std;
 
savings::savings(float run,float gasoline)
{
    setRun(run);
    setGasoline(gasoline);
}
void savings::setRun(float r)
{
    Run = r;
}
void savings::setGasoline(float g)
{
    Gasoline = g;
}
 
float savings::getRun()
{
    return Run;
}
float savings::getGasoline()
{
    return Gasoline;
}
float savings::getGenRun()
{
    return GenRun;
}
float savings::getGenGasoline()
{
    return GenGasoline;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2011, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с использованием класса (C++):

Проблемы с шаблоном класса - C++
Здравствуйте, помогите пожалуйста понять в чем ошибка, пытаюсь написать шаблон класса векторов, но получаю следующее: 1&gt;main.obj :...

Разобраться с использованием класса - C++
#include &lt;assert.h&gt; template &lt;class H&gt;H RanDD(H x){return (H)(random(x)-random(x)+1);}; template &lt;class H&gt; class Matrix { ...

Функция вывода с использованием класса - C++
Предположим, у меня есть класс прямоугольника Window; И я реализовал в нем функцию вывода void Window::print (std::string&amp; s) {...} ...

Реализация класса С++ с использованием Си фукций - C++
Добрый день, нужен совет как лучше написать класс С++ в котором используются С функции. С учетом что компилироваться будет только gcc...

создать программу с использованием класса - C++
Написать программу, в которой используется класс myclass для задания значений &quot;а&quot; для объектов &quot;ob1&quot; и &quot;ob2&quot; и вывода на экран этих...

Нужна программа с использованием класса String - C++
Здравствуйте, нужна ваша помощь. Требуется написать программу, используя только пункты 3,5,8 и 12 3) class STRING { public: ...

18
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375
22.08.2011, 21:15 #2
Цитата Сообщение от TBIKC Посмотреть сообщение
Ведь если я напишу в main.cpp так savings One(2,16);
Ну эт ты ставишь значения по умолчани. Хотя не пойму, почему так делаешь. Можно ж переменные ввести вместо готовых цифр.
Нет компилятора под рукой. проверить не могу. Почему у тебя все данные в классе закрытые?.

Да и задачка явно неполная. Функции так лишнюю память жрут. Если уж так делаешь, можно все в майне сделать просто
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 21:28 #3
TBIKC, можете прокомментировать вот это:
C++
1
2
3
        float Gasoline; // Число залитых литров бензина
        float GenRun; // Всего литров
        float GenGasoline; // Всего бензина
И у вас все методы и конструктор - private. А нужно public, я так понимаю.
0
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 21:45  [ТС] #4
float Gasoline; // Число залитых литров бензина
float GenRun; // Всего км. пробега )
float GenGasoline; // Всего бензина

да public, а что же тогда private делать ?

Пс покажите пожалуйста реализацию в main.cpp
0
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375
22.08.2011, 21:50 #5
Цитата Сообщение от TBIKC Посмотреть сообщение
да public, а что же тогда private делать ?
Пс покажите пожалуйста реализацию в main.cpp
Чувак! Да у тебя проблема в том, что непонятно, что ты хочешь. Функции ничего не делают фактически. Бессмысленная реализация

Для начала хотя бы так распредели
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class savings
{
private:
        float Run; // Пробег в километрах
        float Gasoline; // Число залитых литров бензина
        float GenRun; // Всего литров
        float GenGasoline; // Всего бензина
 public:
savings(float Run,float Gasoline);//Конструктор
 
float getRun();
float getGasoline();
float getGenRun();
float getGenGasoline();
void setRun(float);
void setGasoline(float);
};
0
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 22:26  [ТС] #6
Возможно вы правы, просто Сначала идёт глава Введение в классы и объекты а потом управляющие конструкции, ну вот я и подумал ( после опыта php ) начну в плюсах сразу всё делать на классах, привыкну и всё

Добавлено через 24 минуты
Решил делать всё в 1 файле, избавиться от не нужных функций и подставить вместо значений переменные, что то не получается

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
#include "stdafx.h"
#include <iostream>
#include "lang.h"
using namespace std;
class savings
{
private:
    float Run; // Пробег в километрах
    float Gasoline; // Число залитых литров бензина
    float GenRun = 0 ; // Всего пробега
    float GenGasoline = 0; // Всего бензина
 
public:
savings(float Run,float Gasoline);//Конструктор
 
};
 
int main()
{
    lang();
 
    savings One(Run,Gasoline);
 
    int count;
    cout << "Введите пробег" << endl;
    cin >> Run;
    cout << "Введите количество бензина" << endl;
    cin >> Gasoline;
    while ( count != - 1 )
    {
        cout << "Введите пробег" << endl;
        cin >> Run;
        cout << "Введите количество бензина" << endl;
        cin >> Gasoline;
 
        GenRun += Run;
        GenGasoline += Gasoline; 
    }
        cout << "Всего пройдено км " << GenRun << endl;
        cout << "Всего потрачено бензина" << GenGasoline << endl;
        
 
    system("PAUSE");
    return 0;
}
0
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375
22.08.2011, 23:04 #7
Цитата Сообщение от TBIKC Посмотреть сообщение
Решил делать всё в 1 файле, избавиться от не нужных функций и подставить вместо значений переменные, что то не получается
Миллион ошибок. Просто ни с чем не связанные элементы. Не знаю, как там в ПыХыПы. Но здесь вернись в 1 главу учебника по С++. В первую очередь повтори функции и как они работают. Без обид. Даж для меня начинающего это слишком простая программа. С ней легко разобраться с учебником.
0
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 23:11  [ТС] #8
Я ещё до функций не доходил, Только введение в классы и объекты, управляющие конструкции часть 1 и всё
0
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375
22.08.2011, 23:26 #9
Цитата Сообщение от TBIKC Посмотреть сообщение
Я ещё до функций не доходил, Только введение в классы и объекты, управляющие конструкции часть 1 и всё
От функций к классам.! Если не знаешь, как разрабатывать функции, то очнеь скучно. А тут как начинаешь осваивать вызов по значению, вызов по ссылке, аж мурашки по коже начинают бегать, как же можно все круто сделать)))
0
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
22.08.2011, 23:28  [ТС] #10
Помогите пожалуйста связать класс с кодом, чтобы работала программа, пожалуйста
0
viktorrrr
45 / 45 / 1
Регистрация: 11.02.2010
Сообщений: 375
22.08.2011, 23:43 #11
Цитата Сообщение от TBIKC Посмотреть сообщение
Помогите пожалуйста связать класс с кодом, чтобы работала программа, пожалуйста
Может, завтра?. ХОтя, завтра могу поздно придти домой
0
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
22.08.2011, 23:49 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от TBIKC Посмотреть сообщение
Помогите пожалуйста связать класс с кодом, чтобы работала программа, пожалуйста
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
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#include <iostream>
#include "lang.h"
using namespace std;
class savings
{
public:
 
savings(float Run,float Gasoline)
{
this->Run=Run; 
this->Gasoline=Gasoline;
GenRun=0;
GenGasoline=0;
}
 
void add(float Run, float Gasoline)
{
GenRun+=Run;
GenGasoline+=Gasoline;
}
 
float getGenGasoline()
{
return this->GenGasoline;
}
 
float getGenRun()
{
return this->GenRun;
}
 
 private:
        float Run; // Пробег в километрах
        float Gasoline; // Число залитых литров бензина
        float GenRun ; // Всего пробега
        float GenGasoline; // Всего бензина
};
 
int main()
{
        lang();
        int Run, Gasoline;
        cout << "Введите пробег" << endl;
        cin >> Run;
        cout << "Введите количество бензина" << endl;
        cin >> Gasoline;
        savings One(Run,Gasoline);
 
        int count;
        cout << "Введите количество заправок" << endl;
        cin >> count;
        while ( count != - 1 )
        {
                cout << "Введите пробег" << endl;
                cin >> Run;
                cout << "Введите количество бензина" << endl;
                cin >> Gasoline;
                One.add(Run,Gasoline); 
        }
                cout << "Всего пройдено км " << One.getGenRun() << endl;
                cout << "Всего потрачено бензина" << One.getGenGasoline() << endl;
                
 
        system("PAUSE");
        return 0;
}
1
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
23.08.2011, 11:23  [ТС] #13
Прокомментируйте пожалуйста строчки
this->Run=Run;
и
return this->GenGasoline;

+ ввожу -1 а он не прекращает писать введите ...

Добавлено через 11 часов 30 минут
Происходит зацикливание, что не так ?
0
-=ЮрА=-
Заблокирован
Автор FAQ
23.08.2011, 14:40 #14
Листинги
[savings.h]
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
#ifndef C_SAVINGS
#define C_SAVINGS
 
#pragma once
 
class savings
{
private:
    float Run;          // Пробег в километрах
    float Gasoline;     // Число залитых литров бензина
    float GenRun;       // Всего литров
    float GenGasoline;  // Всего бензина
public: 
    savings(float Run,float Gasoline);//Конструктор
    ~savings();//Лучше всего всегда и деструктор, пусть и пустой делать не прогадаешь!
 
    void add(float Run, float Gasoline);
 
    float getRun();
    float getGenRun();
    void  setRun(float);
 
    float getGasoline();
    void  setGasoline(float);
    float getGenGasoline();
};
 
#endif
[savings.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
#include "savings.h"
 
savings::savings(float run,float gasoline)
{
    GenRun      =   0;  // Всего литров
    GenGasoline =   0;  // Всего бензина
    setRun(run);
    setGasoline(gasoline);
}
 
savings::~savings()
{
    //
}
 
void savings::add(float run, float gasoline)
{
    GenRun      +=  run;
    GenGasoline +=  gasoline;
}
 
void savings::setRun(float r)
{
    Run = r;
}
 
void savings::setGasoline(float g)
{
    Gasoline = g;
}
 
float savings::getRun()
{
    return Run;
}
 
float savings::getGasoline()
{
    return Gasoline;
}
 
float savings::getGenRun()
{
    return GenRun;
}
 
float savings::getGenGasoline()
{
    return GenGasoline;
}
[use_class.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
#include <iostream.h>
#include <windows.h>
#include "savings.h"
 
int main()
{
    SetConsoleOutputCP(1251);//Русский
    int Run, Gasoline;
    savings One(0,0);
 
    int count;
    cout << "Введите количество заправок" << endl;
    cin >> count;
    while ( count != 0 )
    {
        cout << "Введите пробег" << endl;
        cin >> Run;
        cout << "Введите количество бензина" << endl;
        cin >> Gasoline;
        One.add(Run,Gasoline); 
        count--;//У тебя не было дикремента
    }
    cout << "Всего пройдено км "      << One.getGenRun() << endl;
    cout << "Всего потрачено бензина" << One.getGenGasoline() << endl;
                
    system("PAUSE");
    return 0;
}
0
Миниатюры
Проблемы с использованием класса  
-=ЮрА=-
Заблокирован
Автор FAQ
23.08.2011, 14:41 #15
Цитата Сообщение от TBIKC Посмотреть сообщение
Происходит зацикливание, что не так ?
-
Ты забыл что нужно дикрементировать count --
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
count--;//У тебя не было дикремента
1
23.08.2011, 14:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2011, 14:41
Привет! Вот еще темы с ответами:

Переделать программу с использованием шаблона класса - C++
Организовать программу с помощью Шаблона класса. class ttt { char *str; public: ttt(); bool operator &gt;= (ttt...

Решение математического примера с использованием класса - C++
Нужно решить пример с помощью класса. В принципе, я всё написал, с ответом сходится полностью. Но, если честно, я делал многое наобум и не...

Создание класса с использованием библиотеки String - C++
Подскажите как создать класс что бы в объекте использовался тип стринг

Программа для вычисления матриц с использованием класса - C++
Пожалуйста, перепишите эту прогу, используя класс.:) #include &lt;iostream&gt; #include &lt;iomanip&gt; int main(){ int n; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.