Форум программистов, компьютерный форум CyberForum.ru

Нужно рассчитать квартплату для домов - C++

Восстановить пароль Регистрация
 
kukhtikov
2 / 2 / 0
Регистрация: 16.12.2012
Сообщений: 97
18.05.2013, 16:35     Нужно рассчитать квартплату для домов #1
Дано 2 класса - класс домов и класс улиц. Класс улиц является контейнерным (массив). Мне надо добавить расчет квартплаты для каждого дома на улице (или для всех домов на улице) в основную функцию.. Т.е. Сначала выбираем улицу затем выбираем дом из предложенных (или только улицу) и расчитываем.. Не получается это реализовать

Главная функция:
Кликните здесь для просмотра всего текста
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
#include "stdafx.h"
#include "Home.h"
#include "Street.h"
 
struct Streeet
{
    Street a;
    Streeet *next;
};
 
void Add(Streeet *&pF, Streeet *p);
void Delete(Streeet *&pF, Streeet *p);
Streeet* Choise(Streeet *&pF);
 
void main()
{
    setlocale(LC_ALL, "rus");   
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    Streeet *p=0, *z;
    while (1)
    {
    cout << "---------------------------------- МЕНЮ ----------------------------------" << endl << endl;
    cout << "\t1.  Добавить/удалить улицу" << endl << endl;
    cout << "\t2.  Добавить/удалить дом" << endl << endl;
    cout << "\t3.  Редактировать данные улицы" << endl << endl;
    cout << "\t4.  Просмотр всех улиц" << endl << endl;
    cout << "\t5.  Расчитать квартплату" << endl << endl;
    cout << "\t0.  Завершение работы программы" << endl << endl;
    cout << "-------------------------------- КОНЕЦ МЕНЮ ------------------------------" << endl;
    char ch='$';    ch=_getche();   cin.sync();
    cout << endl;
    switch(ch)
    {
 
    case '1':
        {
            while (1) 
            {
                cout << "Нажмите Д/У чтобы добавить/удалить улицу\n";
                ch=_getche();   cin.sync();
                if (ch!='д' && ch!='Д' && ch!='у' && ch!='У')
                    cout << "\n\nОшибка!\nНажата не та клавиша!\n\n";
                else break;
            }
            if (ch=='д' || ch=='Д') //Добавление улицы
            {
                cout << endl;
                fflush(stdin);
                cout << "Название города: ";
                string b1; getline(cin, b1);    cin.sync();
                fflush(stdin);
                cout << "Название района: ";
                string b2; getline(cin, b2);    cin.sync();
                fflush(stdin);
                cout << "Символьное название улицы: ";
                string b3; getline(cin, b3);    cin.sync();
                fflush(stdin);
                cout << "Введите количество домов на улице: ";
                int b4; cin >> b4; cin.sync();
                Home *b5=new Home[b4];
                for(int i=0;i<b4;i++)
                {
                    cout << endl;
                    fflush(stdin);
                    cout << "Символьное имя " << i << "-го дома: ";
                    string b5_1; cin >> b5_1; cin.sync();
                    fflush(stdin);
                    b5[i].set_HomeName(b5_1);
                    cout << "Числовой номер " << i << "-го дома: ";
                    int b5_2; cin >> b5_2; cin.sync();
                    b5[i].set_IHome(b5_2);
                    cout << "Количество этажей в "<< i <<"-м доме: ";
                    int b5_3; cin >> b5_3; cin.sync();
                    b5[i].set_EtagCount(b5_3);
                    /*cout << "Количество квартир в " << i << "-м доме: ";
                    int b5_4; cin >> b5_4; cin.sync();
                    b5[i].set_NumbApartament(b5_4);*/
                    cout << "Количество жителей в " << i << "-м доме: ";
                    int b5_5; cin >> b5_5; cin.sync();
                    b5[i].set_MenCount(b5_5);
                }
                z=new Streeet;
                z->a=Street(b1,b2,b3,b4,b5);
                //Добавляем элемент в конец списка
                Add(p,z);
                cout << endl;
                system("pause");
                break;
            }
            if (ch=='у' || ch=='У') //Удаление улицы
            {
                cout << "\n\tВыберите улицу, которую хотите удалить:\n" << endl;
                z=Choise(p);
                Delete (p,z);
                cout << endl;
                system("pause");
                break;
            }
        }
 
    case '2':         //Добавить/удалить дом
        {
            if (p==0)
            {
                cout << "---------------------------------- Нет данных! --------------------------" << endl << endl;
                system("pause");
                break;
            }
            else
            {
                while (1) 
                {
                    cout << "\nНажмите Д/У чтобы добавить/удалить дом\n";
                    ch=_getche();   cin.sync();
                    if (ch!='д' && ch!='Д' && ch!='у' && ch!='У')
                        cout << "\n\nОшибка!\nНажата не та клавиша!\n\n";
                    else break;
                }
                if (ch=='д' || ch=='Д') //Добавление дома
                {
                    cout << "\n\tВыберите улицу:\n" << endl;
                    z=Choise(p);
                    cout << "Дом: " << endl;
                    fflush(stdin);
                    cout << "Символьное имя дома: ";
                    string b1; cin >> b1; cin.sync();
                    fflush(stdin);
                    cout << "Числовой номер дома: ";
                    int b2; cin >> b2; cin.sync();
                    cout << "Число этажей в доме: ";
                    int b3; cin >> b3; cin.sync();
                    /*cout << "Количество квартир в доме: ";
                    int b4; cin >> b4; cin.sync();*/
                    cout << "Количество жителей в доме: ";
                    int b5; cin >> b5; cin.sync();
                    cout << "Квартплата: ";
                    double b6; cin >> b6; cin.sync();
                    Home h(b1,b2,b3,b5,b6),            //Добавляемый дом
                        *f=z->a.Get_Home(),         //Исходный массив домов
                        *pp;                         //Массив домов после добавления
                    int kol=z->a.Get_HomesNum();      //Количество домов до добавления
                    pp=new Home[kol+1];
                    for(int i=0;i<kol;i++)
                        pp[i]=f[i];
                    pp[kol]=h;
                    z->a.Set_Home(kol+1, pp);
                    cout << endl;
                    system("pause");
                    break;
                }
                if(ch=='у' || ch == 'У')  //Удаление дома
                {
                    cout << "\n\tВыберите улицу:\n" << endl;
                    z=Choise(p);
                    cout << "Выберите дом, который надо снести, :\n";
                    for(int i=0;i<z->a.Get_HomesNum();i++)
                        cout << i+1 << " - " << z->a.Get_Home()[i].get_HomeName() << endl;
                    int k;  cin>>k; cin.sync(); k--;
                    Home *d=z->a.Get_Home(),               //Исходный массив домов
                        *j;                              //Массив домов после удаления выбранного дома
                    int u=z->a.Get_HomesNum();           //Количество элементов исходного массива домов
                    j=new Home[u-1];
                    for(int i=0;i<k;i++)
                        j[i]=d[i];
                    for(int i=k+1;i<u;i++)
                        j[i]=d[i];
                    z->a.Set_Home(u-1,j);
                    cout << endl;
                    system("pause");
                    break;
                }
            }
        }
 
    case '3':              //Редактирование данных улицы
        {
            if (p==0)
            {
                cout << "---------------------------------- Нет данных! --------------------------" << endl << endl;
                system("pause");
                break;
            }
            else
            {
                cout << "\tВыберите улицу, данные которой хотите отредактиовать:\n" << endl;
                z=Choise(p);
                cout << "\tЧто хотите изменить?" << endl;
                cout << "1  -  Название города" << endl;
                cout << "2  -  Название района" << endl;
                cout << "3  -  Символьное название улицы" << endl;
        
                int q;  cin >> q;   cin.sync();
                fflush(stdin);
                string New;
                cout << endl << "Внесите изменения:  " << endl;
                getline(cin, New);
                fflush(stdin);
                if (q==1) z->a.Set_City(New);
                if (q==2) z->a.Set_Rayon(New);
                if (q==3) z->a.Set_NameStreet(New);
        
                cout << endl;
                system("pause");
                break;
            }
        }
 
        case '4':   //Просмотр всех улиц
        {
            if (p==0)
                cout << "---------------------------------- Нет данных! --------------------------" << endl;
            else
                for (z=p; z; z=z->next)
                    cout << z->a;
            cout << endl;
            system("pause");
            break;
        }
 
    
 
    case '0':
        return; //Завершение работы программы
    default:
        {
            cout << endl << "Ошибка! Нажата не та клавиша!\n"
                        << "Нажмите клавишу исходя из пунктов Меню!\n" << endl;
            system("pause");
            break;
        }
    }
    }
 
}
 
void Add(Streeet *&pF, Streeet *p)  //Добавление элементов в конец списка
{
    p->next=0;
    if (pF==0)
    {
        pF=p; 
        return;
    }
    Streeet *pEnd=pF; //Ищем последний элемент
    while (pEnd->next)
        pEnd=pEnd->next;
    pEnd->next=p;
}
 
void Delete(Streeet *&pF, Streeet *p) //Удалить элемент p из списка
{
    if (pF==0 || p==0) return;
    if (p==pF)
    {
        pF=pF->next;
        return;
    } // Ищем адрес предыдущего элемента перед p
    Streeet *pPred=pF;
    while (pPred->next!=p)
    {
        pPred=pPred->next;
        if (pPred==0) return; // Если элемента p нет в списке
    }
    pPred->next=p->next;
    return;
}
 
Streeet* Choise(Streeet *&pF)
{
    if (pF==0) 
    {
        cout << "---------------------------------- Нет данных! --------------------------" << endl;
        return 0;
    }
    int k=0;
    Streeet *ch=pF;
    while (ch)
    {
        cout << ++k << "\t" << ch->a.Get_NameStreet() << endl;
        ch=ch->next;
    }
    int u;  cin >> u;   cin.sync();
    Streeet *q=pF;
    int j=1;
    while (j!=u)
    {
        j++;
        q=q->next;
    }
    cout << "Выбрана группа: " << q->a.Get_NameStreet() << endl;
    return q;
}


Home.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
29
30
31
32
33
34
#pragma once
#ifndef Home_H
#define Home_H
 
class Home
{
    string HomeName;                           //Символьное имя дома
    int iHome;                                 //Числовой номер дома
    int EtagCount;                             //Число этажей в доме
    int MenCount;                              //Число жителей в доме
    //int NumbApartament;                        //Число квартир в доме
 
    public:
    Home(void);                                    //Конструктор инициализации "пустого" дома
    Home(string, int, int, int, double);              //Конструктор инициализации студента с параметрами
    ~Home(void);                                   //Деструктор
 
    void set_HomeName(const string);           //Изменить символьное имя дома
    void set_IHome(const int);                 //Изменить числовой номер дома
    void set_EtagCount(const int);             //Изменить количество этажей в доме
    void set_MenCount(const int);              //Изменить количество жителей в доме
    //void set_NumbApartament(const int);        //Изменить количество квартир в доме
 
    const string get_HomeName();               //Получить символьное имя дома
    const int get_IHome();                     //Получить числовой номер дома
    const int get_EtagCount();                 //Получить количество этажей в доме
    const int get_MenCount();                  //Получить количество жителей в доме
    //const int get_NumbApartament();            //Получить количество квартир в доме
 
    friend ostream &operator<< (ostream &output, Home &o);  //Перегрузка оператора вывода "<<"
    friend bool operator!= (Home &x, Home &y);          //Перегрузка бинарного оператора "!="
    friend Home &operator+ (Home &, Home &);            //Перегрузка оператора "+"
};
#endif


Home.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "stdafx.h"
#include "Home.h"
 
 
Home::Home(void) //Создание дома без параметров
{
    this->HomeName=HomeName;
    this->iHome=this->EtagCount=this->MenCount=KvPlata=0;
}
 
Home::Home(string HN, int iHome, int EtagCount, int MenCount,double KvP)
{
    this->HomeName=HN;
    this->iHome=iHome;
    this->EtagCount=EtagCount;
    this->MenCount=MenCount;
    //this->NumbApartament=NumbApartament;
}
 
Home::~Home(void) //Снос дома
{
}
 
const string Home::get_HomeName() {return Home::HomeName;}
const int Home::get_IHome() {return Home::iHome;}
const int Home::get_EtagCount() {return Home::EtagCount;}
const int Home::get_MenCount() {return Home::MenCount;}
//const int Home::get_NumbApartament() {return Home::NumbApartament;}
 
void Home::set_HomeName(const string HN)
{
    this->HomeName=HN;
    return;
}
void Home::set_IHome(const int iH)
{
    this->iHome=iH;
    return;
}
void Home::set_EtagCount(const int E_C)
{
    this->EtagCount=E_C;
    return;
}
void Home::set_MenCount(const int M_C)
{
    this->MenCount=M_C;
    return;
}
/*void Home::set_NumbApartament(const int N_A)
{
    this->NumbApartament=N_A;
    return;
}*/
 
ostream &operator<< (ostream &output, Home &o)
{
    output.fill('=');
    output                      << "|"                          << setw(79) << right                    << "|\n";
    output.fill(' ');
    output << setw(30) << left  << "| Символьное имя дома:"             << "| " << setw(46) << left << o.get_HomeName()     << "|\n";
    output << setw(30) << left  << "| Числовой номер дома:"     << "| " << setw(46) << left << o.get_IHome()        << "|\n";
    output << setw(30) << left  << "| Число этажей в доме:"     << "| " << setw(46) << left << o.get_EtagCount()        << "|\n";
    /*output << setw(30) << left    << "| Число квартир в доме:"        << "| " << setw(46) << left << o.get_NumbApartament()       << "|\n";*/
    output << setw(30) << left  << "| Число жителей в доме:"        << "| " << setw(46) << left << o.get_MenCount()     << "|\n";
    return output;
}
 
 
bool operator!= (Home &x, Home &y)
{
    if (x.get_HomeName()!=y.get_HomeName())
        return true;
    if (x.get_IHome()!=y.get_IHome())
        return true;
    if (x.get_EtagCount()!=y.get_EtagCount())
        return true;
    if (x.get_MenCount()!=y.get_MenCount())
        return true;
    /*if (x.get_NumbApartament()!=y.get_NumbApartament())
        return true;*/
    return false;
}
 
Home &operator+ (Home &h1, Home &h2)
{
    Home h3(h1);
    h3.set_MenCount(0);
    return h3;
}


Street.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
29
30
31
32
33
34
#ifndef Street_H
#define Street_H
#include "Home.h"
#pragma once
 
 
class Street
{
    string City;                              //Название города
    string Rayon;                             //Район города
    string Name_Street;                       //Символьное название улицы
    int Homes_num;                            //Число домов на улице
    Home *home;                               //Массив домов на улице
 
    public:
    Street(void);
    Street(string, string, string, int, Home*);
    Street(Street &f);
    ~Street(void);
                     
    string Get_City();                                      //Получить название города
    string Get_Rayon();                                     //Получить название района
    string Get_NameStreet();                                //Получить символьное название улицы
    int Get_HomesNum();                                     //Получить число домов на улице
    Home* Get_Home();                                       //Получить массив домов
 
    void Set_City(const string);                            //Изменить название города
    void Set_Rayon(const string);                           //Изменить название района
    void Set_NameStreet(const string);                      //Изменить символьное название улицы
    void Set_Home(int, const Home*);                        //Изменить массив домов
 
    friend ostream &operator<<(ostream &output, Street &o); //Перегрузка оператора вывода <<
};
#endif


Street.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include "stdafx.h"
#include "Street.h"
 
Street::Street(void)
{
    City="";
    Rayon="";
    Name_Street="";
    Homes_num=0;
}
 
Street::Street(string C, string R, string N_S, int H_N,Home *home1)
{
    this->City=C;
    this->Rayon=R;
    this->Name_Street=N_S;
    this->Homes_num=H_N;
    this->home=new Home[this->Homes_num];
    for(int i=0;i<this->Homes_num;i++)
        this->home[i]=home1[i];
}
 
Street::Street(Street &f)
{
    this->City=f.City;
    this->Rayon=f.Rayon;
    this->Name_Street=f.Name_Street;
    this->Homes_num=f.Homes_num;
    this->home=new Home[this->Homes_num];
    for(int i=0;i<this->Homes_num;i++)
        this->home[i]=f.home[i];
}
 
Street::~Street(void)
{
}
 
string Street::Get_City()
{
    return Street::City;
}
string Street::Get_Rayon()
{
    return Street::Rayon;
}
string Street::Get_NameStreet()
{
    return Street::Name_Street;
}
int Street::Get_HomesNum()
{
    return Street::Homes_num;
}
Home* Street::Get_Home()
{
    return home;
}
 
void Street::Set_City(const string C)
{
    this->City=C;
    return;
}
void Street::Set_Rayon(const string R)
{
    this->Rayon=R;
    return;
}
void Street::Set_NameStreet(const string NStr)
{
    this->Name_Street=NStr;
    return;
}
 
void Street::Set_Home(int HoN, const Home *s)
{
    this->Homes_num=HoN;
    this->home=new Home[this->Homes_num];
    for(int i=0;i<this->Homes_num;i++)
        this->home[i]=s[i];
    return;
}
 
 
ostream &operator<< (ostream &output,  Street &o)
{   
    output.fill('_');
    output << " " << setw(78) << right << "\n";
    output.fill(' ');
    output << setw(30) << left << "| Город:"                        << "| " << setw(46) << left << o.Get_City()         << "|\n";
    output << setw(30) << left << "| Район:"                        << "| " << setw(46) << left << o.Get_Rayon()            << "|\n";
    output << setw(30) << left << "| Символьное название улицы:"        << "| " << setw(46) << left << o.Get_NameStreet()           << "|\n";
    output << setw(30) << left << "| Количество домов:"         << "| " << setw(46) << left << o.Get_HomesNum() << "|\n";
    for (int i=0; i<o.Get_HomesNum(); i++)
        output << o.Get_Home()[i];
    output << "|_____________________________|_______________________________________________|\n";
    return output;
}


Добавлено через 14 часов 39 минут
stdafx.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#pragma once
#include "targetver.h"
 
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <vector>
#include <iomanip>
#include <Windows.h>
#include <string>
#include <istream>
#include <conio.h>
using namespace std;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 16:35     Нужно рассчитать квартплату для домов
Посмотрите здесь:

C++ Рассчитать, сколько нужно заплатить за месяц, если ребенок отходил N дней
C++ Рассчитать, сколько нужно заплатить за месяц, если ребенок отходил N дней
C++ Как просчитать шаги от домов до магазина
C++ Класс домов и класс улиц для учета поступлений квартплаты. Массив
Найти полную квартплату с учетом возможного наличия излишков жилплощади C++
Вычислить количество домов, которое можно построить на площади s1 C++
Нужно рассчитать день, который будет "послезавтра", по заданной дате C++
Нужно рассчитать сумму числового ряда C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru