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

Соблюдение норм ООП - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно вывести все возможные возрастающие 6-ти значные комбинации http://www.cyberforum.ru/cpp-beginners/thread731383.html
Задачка: Нужно вывести все возможные возрастающие 6-ти значные комбинации из промежутка чисел <0,100> Подкиньте пару идей.
C++ Найти в 2-мерном массиве строку с наименьшим елементом, заменить знак(-+) каждого елемента в этой строке на противоположный Нужно найти в 2-мерном массиве строку с наименьшим елементом, заменить знак(-+) каждого елемента в этой строке на противоположный. Напишите пожалуйста код программы. Заранее благодарен. Добавлено через 22 минуты Нужно найти в 2-мерном массиве строку с наименьшим елементом, заменить знак(-+) каждого елемента в этой строке на противоположный. Напишите пожалуйста код программы. Заранее... http://www.cyberforum.ru/cpp-beginners/thread731376.html
C++ Текстовая запись числа
Суть в следующем, даны 5 чисел: 1,2,3,4,5. Нужно, чтобы при вводе любого из этих чисел появлялась текстовая запись этого числа. Например, вводим "1" - появляется: "odin", вводим "3" - появляется: "tri" и т.д :)
C++ Разработать функцию зануления главной диагонали двумерного массива
Программа подработана для такого задания: Разработать функцию зануления строки двумерного массива. Теперь нужно переделать для зануления главной диагонали двумерного массива. #include <tchar.h> #include <iostream> #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <time.h> int** mNull(int col,int row,int **arr) {
C++ Найти сумму элементов левее минимального J(20) http://www.cyberforum.ru/cpp-beginners/thread731336.html
Задача состояла в том, чтобы посчитать сумму положительных элементов J(10). Теперь нужно переделать вот так: найти сумму элементов левее минимального! Массив теперь J(20) #include <tchar.h> #include <iostream.h> #include <stdlib.h> #include <time.h> int _tmain(int argc, _TCHAR* argv) { srand(time(NULL));
C++ декомпилировать если я использую для написания среду MVS с++ "приложение Windows forms" можно ли мой exe также легко как exe написанный на c# декомпилировать(получить исх код)? подробнее

Показать сообщение отдельно
tramp_1-3
 Аватар для tramp_1-3
14 / 14 / 1
Регистрация: 13.10.2012
Сообщений: 428
14.12.2012, 12:02     Соблюдение норм ООП
После прочтения главы книги о классах языка C++ я очень хотел написать программу, в которой их свойства применяются. При написании методов класса я старался как можно дальше абстрагироваться от подробностей их применения, в связи с этим и есть такая фрагментация функции show (), насколько у меня это получилось? Собственно вопрос: что мне нужно подправить, чтобы программа была Ъ-ООП, или же всё и так не плохо?
PS я учусь по направлению прикладная информатика в экономике, потому и не удержался добавить пару плюшек, специфичных для работы с банковскими счетами (история операций) и удаление персональных данных. Насколько у меня это вышло тоже прошу написать.
объявление класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef _BANK_H_
#define _BANK_H_
class Acct {
    private: 
        static const int NAME = 30;
        char name [NAME];
        int number;
        double balance;
        double operations [NAME];
    public:
        Acct ();
        void _fill (const char anyname [], const int & acc, const double & money);
        ~Acct ();
        int operation;
        const void _put (const double & money);
        const void _take (const double & money);
        const void _show_name () const;
        const void _show_number () const;
        const void _show_balance () const;
        const bool _show_actions (int current, bool request = false) const;
    };
#endif
подробная реализация функций
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
#ifndef _CLIENT_FUNCTIONS_H_
#define _CLIENT_FUNCTIONS_H_
#include <iostream>
#include "bank1.h"
using std::cout;
using std::cin;
double money;
void _show (const Acct & client) {
    cout << '\n';
    client._show_name ();
    cout << " has ";
    client._show_balance ();
    cout << " on it's account by number ";
    client._show_number ();
    cout << '\n';
};
void _fill (Acct & client) {
    cout << "\nEnter a name of client: ";
    char name [30];
    cin.get (name, 29);
    cout << "Enter his number (10 digits): ";
    int number;
    while (!(cin >> number) || number <= 999999999) {
        cin.clear ();
        while (cin.get () != '\n')
            continue;
        cout << "Enter a number consisting of 10 digits: ";
    };    
    cout << "Enter his balance: ";
    double balance;
    while (!(cin >> balance)){
        cin.clear ();
        while (cin.get () != '\n')
            continue;
        };
    client._fill (name, number, balance);
};
void _show_actions (const Acct & client) {
    cout << '\n';
    if (client.operation != 0)
       for (int current = 0; current < client.operation; current++) {
           if (client._show_actions (current, true))
               cout << "Adding ";
           else
               cout << "Drawing ";
           client._show_actions (current);
           cout << " provisional units.\n";
            }
    else 
           cout << "There are no any actions on your account.\n";
        }
    void showmenu () {
        cout << "\nEnter I to show information about a client\n"
             << "To put money on the account enter P\n"
             << "To take money from account enter T\n"
             << "To show  recent actions enter A\n"
             << "To exit from this account and to create a new account enter D\n"
             << "To terminate enter Q\n"
             << "Your choice: ";
            };
#endif
методы класса
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
#include <iostream>
#include <cstring>
#include "bank1.h"
using std::cin;
using std::cout;
using std::strncpy;
Acct::Acct () {
    strncpy (name, "Sample Man", 11);
    number = 0;
    balance = 0;
    operation = 0;
    for (int i = 0; i < NAME; i++)
        operations [i] = 0;
};
void Acct::_fill (const char anyname [], const int & acc, const double & money) {
    strncpy (name, anyname, NAME);
    number = acc;
    balance = money;
};
Acct::~Acct () {
    strncpy (name, "Sample man", 11);
    for (int i = 0; i < NAME; i++)
        operations [i] = 0;
    operation = 0;
    number = 0;
    balance = 0.0;
};
const void Acct::_put (const double & money) {
    balance += money;
    operations [operation++] = money;
};
const void Acct::_take (const double & money) {
    balance -= money;
    operations [operation++] = (-1)*money;
};
const void Acct::_show_name () const {
    cout << name;
};
const void Acct::_show_number () const {
    cout << number;
};
const void Acct::_show_balance () const {
    cout << balance;
};
const bool Acct::_show_actions (int current, bool request) const {
    if (request){
        if (operations [current] > 0)
            return true;
        else 
            return false;
        };
    if (operations [current] > 0)
            cout << operations [current] ;
        else if (operations [current] < 0)
            cout << (-1) * operations [current];
};
собственно, программа
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
#include "client_functions1.h"
int main () {
    cout << "At first, enter information about a client. That's an example of filling:\n";
    Acct client;
    _show (client);
    cout << "Now, it's your turn.\n";
    _fill (client);
    cout << "What do you wish to do now? (Q to quite)\n";
    showmenu ();
    char c;
    while (cin >> c && c != 'Q' && c != 'q'){
    switch (c) {
        case 'I':
        case 'i':   _show (client);
                    break;
        case 'P':
        case 'p':   cout << "Enter a sum to put on your account: ";
                    cin >> money;
                    cout << '\n';
                    client._put (money);
                    break;
        case 'T':
        case 't':   cout << "Enter a sum to take from your account: ";
                    cin >> money;
                    cout << '\n';
                    client._take (money);
                    break;
        case 'A':
        case 'a':   _show_actions (client);
                    break;
        case 'D':
        case 'd': client.~Acct ();
                    cin.ignore (1);
                    _fill (client);
                    break;
        default : cout << "That's not a choise";
    };
    showmenu ();
}
    system ("pause");
    return 0;
};
заранее благодарю

Добавлено через 9 минут
while (!(cin >> number) || number <= 999999999)
здесь, оказывается ошибка. Хотел сделать так, чтобы вводилось 10 цифр.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru