Member 13264822 Ответов: 2

Не могли бы вы помочь мне с проблемами ООП?


Здравствуйте, весь день я пытаюсь как-то написать свой код с помощью ООП на 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++ классов, то ваше время лучше потратить на изучение книги или любого из интернет-ресурсов. Вряд ли вы сможете узнать это из форума быстрых ответов.

2 Ответов

Рейтинг:
2

RickZeeland

Tutorialspoint имеет множество учебных пособий, вот один из них о C++: Учебник По C++ [^]


Рейтинг:
1

Patrice T

Есть инструмент, который позволяет вам видеть, что делает ваш код, его имя-отладчик, это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете видеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.

Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

Совет: найдите учебник по изучению ООП с помощью C++