Не могли бы вы помочь мне с проблемами ООП?
Здравствуйте, весь день я пытаюсь как-то написать свой код с помощью ООП на c++. И я не могу этого сделать. Я хочу спросить вас, с чего я должен начать, чтобы сделать свой код объективным.
Моя программа читает из файла, который содержит одно число в одной строке. Существует максимум 20 номеров. Я прочитал данные и распечатал их. Позже я проверяю, больше ли число 1, и записываю большие числа в файл.
Мой код выглядит так:
#include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; int main() { ifstream myfile("stu.txt"); const size_t SIZE = 30; int value[SIZE]; string line[SIZE]; // creates SIZE empty strings size_t i=0; while(!myfile.eof() && i < SIZE) { getline(myfile,line[i]); // read the next line into the next string ++i; } size_t numLines = i; for (i=0; i < numLines; ++i) { value[i] = atoi(line[i].c_str()); cout << i << ". " << value[i]<<'\n'; // no need to test for empty lines any more } for (i=0; i < numLines; ++i) { if(value[i] > 1) { cout << value[i]<<'\n'; } } { ofstream myfile; myfile.open("file.txt"); for (i=0; i < numLines; ++i) { if(value[i] > 1) { myfile << value[i]<<'\n'; } } myfile.close(); } }
Например, я хочу иметь объективный класс:
class NICE{ private: public: NICE(); void read(); void sort(); void writeSort(): };
Что я уже пробовал:
#include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; class UZD { private: public: UZD(); size_t i; size_t numLines; int value; void read(); void sort(); void printSorted(); }; UZD::UZD() { } void UZD::read() { ifstream myfile("stu.txt"); const size_t SIZE = 30; int value[SIZE]; string line[SIZE]; // creates SIZE empty strings while (!myfile.eof() && i < SIZE) { getline(myfile, line[i]); // read the next line into the next string ++i; } for (i = 0; i < numLines; ++i) { value[i] = atoi(line[i].c_str()); cout << i << ". " << value[i] << '\n'; } } void UZD::sort() { for (i = 0; i < numLines; ++i) { if (value[i] > 1) { cout << value[i] << '\n'; } } } void UZD::printSorted() { numLines = i; ofstream myfile; myfile.open("file.txt"); for (i = 0; i < numLines; ++i) { if (value[i] > 1) { myfile << value[i] << '\n'; } } myfile.close(); } int main() { UZD wow; wow.read(); wow.sort(); wow.printSorted(); }
Но я вовсе не передаю ценности. Я очень запутался. Может быть, вы мне поможете?
Заранее спасибо.
Richard MacCutchan
Если вы не разбираетесь в основах ООП и C++ классов, то ваше время лучше потратить на изучение книги или любого из интернет-ресурсов. Вряд ли вы сможете узнать это из форума быстрых ответов.