Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ввод данных с клавиатуры https://www.cyberforum.ru/ cpp-beginners/ thread621586.html
Помогите, пожалуйста... Если я напишу так:cin >> a; То у меня введутся символы с клавиатуры, а потом каретка автоматически переходит на следующую строку, а мне надо, чтобы каретка осталась на этой...
Цикл: Найти самую длинную неубывающую цепочку чисел C++
В цикле с клавиатуры вводится 15 целых чисел. Необходимо найти самую длинную неубывающую цепочку чисел. На экран вывести найденную максимальную длину цепочки и порядковый номер того числа, с...
C++ Упорядочить массив в с++
Создать целоисчисленный массив. упорядочить элементы массива в порядке возрастания частоты встречаемости. Если в массиве есть несколько элементов, то группы упорядочить по убыванию абсолютных...
C++ Узнать размер файла Дорогие форумчане! Есть у меня есть файл xxxxx.clk(все данные в нем строчные), он весит n-ое количество мегабайт. Нужно задать массив структур из этих строк. Почитал в интернете, нужно использовать... https://www.cyberforum.ru/ cpp-beginners/ thread621582.html
C++ C++ Интерфейс пользователя https://www.cyberforum.ru/ cpp-beginners/ thread621579.html
Есть у меня форма, сделал я ее на с++ atl через ресурс. Теперь надо по нажатии кнопки которая находиться на этой же форме записать всю инфу в файл. НО! Я не знаю как присвойть переменной например...
C++ Массив: сортировка элементов массива по убыванию
Привет всем с Казахстана) Хотелось бы от вас пару уроков взять про массивов. Сначала, пожалуй, начну с этого: Массив, состоящий из 15и символов. Сортировать эти массивы по убыванию. Сделайте, как...
Отсортировать студентов C++
дан масив оценок каждого студента по 1 предмету отсортировать студентов по среднему арифмитическому оценок и отсортировать по количеству пятерок. 10 студентов.10 оценок. должно быть 10 масивов....
C++ Каскадное слияние со специальным распределением Здравствуйте, я хочу реализовать на C++ алгоритм каскадного слияния со специальным распределением. Прочитал материал из Кнута об этом алгоритме и не могу вникнуть, как написать программу на C++,... https://www.cyberforum.ru/ cpp-beginners/ thread621557.html
C++ C++ с чего начать ? https://www.cyberforum.ru/ cpp-beginners/ thread621552.html
Здравствуйте! с чего начать изучать С++, если базовых знаний нету. может какие-то книги есть хорошо написанные (точнее доступным языком) ? или видео уроки... в общем с чего начать чтобы въехать в эту...
C++ Как глобально объявить массив не заданной размерности Цель: при нажатии на button1 создается массив и заполняется рандомными числами, длину массива получаем из TextBox1. А при нажатии на button2, этот массив сортируется по возрастанию. Проблемы: если... https://www.cyberforum.ru/ cpp-beginners/ thread621539.html
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
10.07.2012, 21:37 0

Знаю ли я основы ООП?

10.07.2012, 21:37. Просмотров 4905. Ответов 62
Метки (Все метки)

Ответ

Вот мое решение


main
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
 
int main()
{
        CLSCommand Command;
        while(1)
        {
                Command.Enter();
        }
        return 0;   
}



CLSCommand
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
class CLSCommand
{
        #define COM_ERROR { cout << "Error\n"; return ; }
        #define VARIANT12 { Variant12(command); return ; }
        #define VARIANT2 { Variant2(filename); return ; }
        #define VARIANT3 { Variant3(command);   return ; }
        public:
                CLSCommand(){   }
                void Enter()
                {
                        char chbuff[64];
                        cout << "me: ";
                        gets(chbuff);
                        Analyse(chbuff);
                }
        private:
                void Analyse(string command) // ïåðâè÷íûé àíàëèç
                {
                        string strbuff;
                        
                        if(Str2Str(command, 5, strbuff)) COM_ERROR
                        if(strbuff != "test ") COM_ERROR
                        
                        if(Str2Str(command, 2, strbuff)) COM_ERROR
                        if(strbuff == "-f") VARIANT12
                        if(strbuff == "-h") VARIANT3
                        
                        COM_ERROR
                }
                void Variant12(string& command) // àíàëèç âàðèàíòà 1, 2
                {
                        string strbuff;
                        if(Str2Str(command, 1, strbuff)) COM_ERROR
                        
                        if(! Validate(command[0], false)) COM_ERROR
                        
                        string filename;
                        for(short i=0; i<command.length(); ++i)
                        {
                                if(! Validate(command[0])) break;
                                filename += command[0];
                                command.erase(0, 1);
                        }
                        
                        if(Str2Str(command, 4, strbuff)) COM_ERROR
                        if(strbuff != " -m ") COM_ERROR
                        
                        strbuff.clear();
                        for(short i=0; i<command.length(); ++i)
                        {
                                if(! Validate(command[0], false)) break;
                                strbuff += command[0];
                                command.erase(0, 1);
                        }
                        
                        if(strbuff == "words")
                        {
                                if(Str2Str(command, 4, strbuff)) COM_ERROR
                                if(strbuff != " -v ") COM_ERROR
                                
                                for(short i=0; i<command.length(); ++i)
                                {
                                        if(! Validate(command[i], false)) COM_ERROR
                                }
                                
                                Variant1(filename, command);
                                
                                return ;
                        }
                        if(strbuff == "checksum") VARIANT2
                        
                        COM_ERROR
                }
                void Variant1(string& path, string& word) // àíàëèç âàðèàíòà 1
                {
                        ifstream ifile(path.c_str());
                        int sum = 0;
                        string strbuff;
                        
                        if(! ifile.good()) COM_ERROR
                        
                        while(! ifile.eof())
                        {
                                strbuff.clear();
                                ifile >> strbuff;
                                if(strbuff == word) ++sum;
                        }
                        
                        ifile.close();
                        
                        cout << "sum = " << sum << endl;
                }
                void Variant2(string& path) // àíàëèç âàðèàíòà 2
                {
                        ifstream ifile(path.c_str());
                        int sum = 0;
                        char chbuff[5] = "qwer";
                        
                        if(! ifile.good()) COM_ERROR
                        
                        while(! ifile.eof())
                        {
                                ifile.get(chbuff, 4);
                                sum += *(int*)chbuff;
                        }
                        
                        ifile.close();
                        
                        cout << "checksum = " << sum << endl;
                }
                void Variant3(string& command) // àíàëèç âàðèàíòà 3
                {
                        if(! command.empty()) COM_ERROR
                        
                        cout << "1) test -f <filename> -m words -v <word>\nprint how many <word> in <filename>\n"
                                 << "2) test -f <filename> -m checksum\nprint 32bit checksum from <filename>\n"
                                 << "3) test -h\nprint help\n";
                }
                
                
                bool Str2Str(string& src, short n, string& dst) // return true if error, else - false
                {
                        dst.clear();
                        if(src.length() < n) return true;
                        
                        for(short i=0; i<n; ++i)
                        {
                                dst += src[i];
                        }
                        src.erase(0, n);
                }
                bool Validate(char ch, bool dota = true)
                {
                        return  (
                                            (ch >= 'a' && ch <= 'z')  ||  
                                            (ch >= 'A' && ch <= 'Z')  ||
                                            (ch >= '0' && ch <= '9')  ||
                                            (ch == '.' && dota)
                                      );
                                
                }
                
        #undef COM_ERROR
        #undef VARIANT12
        #undef VARIANT2
        #undef VARIANT3
};


Добавлено через 23 секунды
Зы: это все было одним файлом. Я разделил для читабельности

Вернуться к обсуждению:
Знаю ли я основы ООП?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 21:37
Готовые ответы и решения:

Основы ООП
Доброго времени суток, немного запутался в основах. Есть ли возможность сделать у дочерних классов...

Основы ООП
Здраствуйте! Уже второй день пытаюсь разобраться и хорошего ответа так и не нашел. На форуме...

ООП Создание основы класса
Здравствуйте, получил задание, но немного недопонимаю как это сделать, с чего начать. Помогите...

Основы ООП, ввод данных
Собственно, осваивая основы ООП и выполняя заодно частичное задание с универа(1 курс :scratch:)...

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