Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2018, 22:19   #1
radistkmm
 
Регистрация: 21.04.2018
Сообщений: 5
По умолчанию пытаюсь освоить ООП

Помогите плиз начинающему писаке)))

суть такова, я только начал учиться, пытаюсь освоить ООП и вот в написании небольшого кода у меня возник ступор дальше которого не могу двинуться, есть ошибки, а где не понимаю((((
собственно сам код
тут класс и метод класса
Код:
class bibl
{
public:
	int BookCount=0;

	unsigned int inv[50];
	char avtor[50][20];
	char nazva[50][20];
	unsigned int pages[50];
	unsigned int year[50];

	bibl(void);

	bibl(int _inv, char _avtor, char _nazva, int _pages, int _year);

	~bibl(void);

	void add();
	void del(int n);
	void show(int i);
};
метод класса

Код:
#include "stdafx.h"
#include <iostream>
#include "bibl.h"
#include <locale>
#include "windows.h"

using namespace std;

bibl::bibl(void)
{
}

bibl::bibl(int _inv, char _avtor, char _nazva, int _pages, int _year)
{
}

bibl::~bibl(void)
{
}


void bibl::add()
{
	BookCount++;
	cout << "vvedit inv nomer: ";
	cin >> inv[BookCount];

	cout << "vvedit avtor: ";
	cin >> avtor[BookCount];

	cout << "vvedit nazva: ";
	cin >> nazva[BookCount];

	cout << "vvedit kilkist storinok: ";
	cin >> pages[BookCount];

	cout << "vvedit rik vydannya: ";
	cin >> year[BookCount];
}

void bibl::del(int n)
{
	                                                                     
	BookCount--;
	cout << " inv nomer: " << inv[n];

	cout << "avtor: " << avtor[n];

	cout << "nazva: " << nazva[n];

	cout << "kilkist storinok: " << pages[n];

	cout << "rik vudanya: " << year[n];
}

void bibl::show(int i)
{
	for (int i = 0; i<BookCount; i++)
	{
		                                                                    
		cout << "inv nomer: " << inv[i];

		cout << "avtor: " << avtor[i];

		cout << "nazva: " << nazva[i];

		cout << "kilkist storinok: " << pages[i];

		cout << "rik vudanya: " << year[i];
	}
}
сильно только не смейтесь)))

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 22.04.2018 в 09:56.
radistkmm вне форума Ответить с цитированием
Старый 22.04.2018, 00:15   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ошибкак то какая? А так для размышления:
1. Зачем вам класс, если все поля в паблике?
2. Что вы собрались иницилизировать в библиотеке инфой об одной книге?
3. При добавлении почему вы начинаете писать в массивы с 1?
4. Почему удаление не удаляет по индексу, как следует из интерфеса, а с конца?
5. Почему нет проверки при добавлении на ваши 50? Почему нет проверки при удалении на индекс?
6. Зачем вы включаете неиспользуемые заголовки?
7. Воид не надо в С++ писать в параметрах
8. Зачем вам диструктор, если уничтожать в ручную тут ничего не надо?
9. Не стоит писать пустой дефолтный конструктор. Если нужен пишите =default.
p51x вне форума Ответить с цитированием
Старый 22.04.2018, 02:40   #3
radistkmm
 
Регистрация: 21.04.2018
Сообщений: 5
По умолчанию

Там должна быть не одна книга, что то типа базы данных, с возможностью забивать книги, а потом вызывать информацию о них.
Я еще плохо шарю во всем этом, вот и накидал такое...
А ошибок там достаточно, вот и пытаюсь разгрести, код запускается но дальше ад какой то..
Директивы то я уберу лишние, это фигня, у меня проблема с методом класса где то, данные ввести я могу, а когда их вызываю выдает кучу не нужных символов
Какую проверку Вы имеете в виду?
Вы имели ввиду здесь воид не нужно писать?
bibl::bibl(void)
{
}

bibl::bibl(int _inv, char _avtor, char _nazva, int _pages, int _year)
{
}

bibl::~bibl(void)

Последний раз редактировалось radistkmm; 22.04.2018 в 03:10.
radistkmm вне форума Ответить с цитированием
Старый 22.04.2018, 10:58   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ввод/вывод обычно не делают внутри таких классов. Делайте ввод снаружи и передавайте параметрами функций класса, а результат возвращайте и выводите снаружи что надо. Посмотрите на стандартные контейнеры (std::vector, ...).

Цитата:
Сообщение от radistkmm Посмотреть сообщение
Я еще плохо шарю во всем этом, вот и накидал такое...
Хватит оправдываться всякой фигней, лучше сообщение выше читайте до понимания.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.04.2018, 11:04   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Сообщение от radistkmm Посмотреть сообщение
Там должна быть не одна книга, что то типа базы данных, с возможностью забивать книги, а потом вызывать информацию о них.
Вы в конструктор библиотеки передеаете парамтры 1 книги, что вы этим хотите сказать с точки зрения логики, без программирования?

Цитата:
Сообщение от radistkmm Посмотреть сообщение
у меня проблема с методом класса где то, данные ввести я могу, а когда их вызываю выдает кучу не нужных символов
Я вам уже писал, заносите вы с 1, 0-й элемент не инициализирован. А выводите с 0.

Цитата:
Сообщение от radistkmm Посмотреть сообщение
Какую проверку Вы имеете в виду?
Я обе описал.

Цитата:
Сообщение от radistkmm Посмотреть сообщение
Вы имели ввиду здесь воид не нужно писать?
Да. Это в С есть разница между () и (void).
p51x вне форума Ответить с цитированием
Старый 22.04.2018, 14:40   #6
radistkmm
 
Регистрация: 21.04.2018
Сообщений: 5
По умолчанию

Хоть я так и не понял что к чему, но все равно спасибо)
radistkmm вне форума Ответить с цитированием
Старый 22.04.2018, 15:02   #7
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

а что тут не понятного? У тебя библиотека состоит из книг. Так опиши эту сущность, создай класс книга Book.
ну что там будет- название, автор, год. Все эти поля определи приватными. Наверное лучше сделать конструктор с параметрами ( название, автор, год). И функции геттеры. Если редактировать не надо, сеттеры не нужны.
Я бы в место массивов char использовал std::string.

Ну а далее нам твои книги надо поместить в библиотеку. Можно, для хранения использовать массив или вообще класс написать. Но зачем есть же стандартные контейнеры, вектор например.
Код:
std::vector<Book> bibl;

Последний раз редактировалось SAMOUCHKA; 22.04.2018 в 15:04.
SAMOUCHKA вне форума Ответить с цитированием
Старый 22.04.2018, 15:16   #8
radistkmm
 
Регистрация: 21.04.2018
Сообщений: 5
По умолчанию

Получается мне нужно дописать еще один класс и описание к нему, правильно?
std::string это что? контейнер?
radistkmm вне форума Ответить с цитированием
Старый 22.04.2018, 15:57   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от radistkmm Посмотреть сообщение
std::string это что? контейнер?
Вас в гугле забанили? (если да — используйте VPN)

Читайте и гуглите непонятные слова.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 22.04.2018, 15:57   #10
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

напиши класс книга (Book), а уже объекты этого класса помещай в библиотеку.

Цитата:
Сообщение от radistkmm Посмотреть сообщение
std::string это что? контейнер?
ну типа того. это тип данных для работы со строками. используй его вместо массива char[] гораздо удобнее
SAMOUCHKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь освоить Python, инвалид синтакс L-A Python 9 15.11.2012 13:22
Как освоить С++ futureteamleader Свободное общение 7 17.10.2009 00:57
пытаюсь освоить firebird, пока что-то никак :) friz БД в Delphi 3 21.09.2009 14:18
Паскаль ООП. Примеры программ с использованием ООП SeЯgey Помощь студентам 5 13.05.2009 21:55