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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2013, 22:28   #1
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию массив объектов (С++)

Прошу помочь разобраться в этом, в принципе этот пример не важен, хотелось бы просто немного вникнуть.

Напишите программу на языке программирования С++, в которой создайте класс KNIGA с данными: название, автор, количество страниц, год издания. Класс должен включать методы, реализующие ввод данных о книгах и их вывод на экран с использованием методов класса. В программе создайте массив объектов. Разработайте метод класса, с помощью которого выведите на экран список книг, выпущенных после заданного года.

Вот что вышло (я не могу разобраться с массивом объектов)
да и так... что-то все равно не правильно работает:

Код:
#include "stdafx.h"
#include <iostream>
#define N 2
using namespace std;


class Kniga
{
private:
	char nazv[20];
	char avtor[20];
	int str;
	int god;
	

public:

	

	void set()									// метод для ввода данных
	{ 
		cout<<"vvedite nazvanie :"<<endl;
		cin>>nazv;
		cout<<"vvedite imya avtora :"<<endl;
		cin>>avtor;
		cout<<"vvedite kolichestvo stranic :"<<endl;
		cin>>str;
		cout<<"vvedite god izdaniya :"<<endl;
		cin>>god;
	}

	void show()								// вывода
	{
		cout<<"nazvanie ="<<nazv<<endl;
		cout<<"avtor ="<<avtor<<endl;
		cout<<"kolichestvo stranic ="<<str<<endl;
		cout<<"god izdaniya ="<<god<<endl;
	}


	int ggod()					// возвращаем арг
	{
		return god;
	}


	void tekgod(Kniga *k)			// выводим все что больше текущего года
	{
		int god;
		cin>>god;
		for (int i=0; i<N; i++)
		if (k[i].ggod()<god)
			k[i].show();
	}

};


int _tmain(int argc, _TCHAR* argv[])
{

	Kniga k[N];
	for (int i = 0; i<N; i++)
	{
	k[i].set;
	k[i].show;
	}


	return 0;
}
ovaaal вне форума Ответить с цитированием
Старый 29.06.2013, 22:57   #2
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Код:
Kniga k[N]; // массив из 2х объектов(автоматом срабатывает конструктор по умолчанию.
for (int i = 0; i<N; i++)
{
        // вызываете методы класса от каждого объекта, но все -же
	k[i].set; // нужно так - k[i].set();
	k[i].show; // и так k[i].show();
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.06.2013, 23:04   #3
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Цитата:
int _tmain(int argc, _TCHAR* argv[])
{

Kniga k[N];
for (int i = 0; i<N; i++)
{
k[i].set;
k[i].show;
}


return 0;
}
Код:
int  main()
{

	Kniga k[N];
	for (int i = 0; i<N; i++)
	{
	k[i].set();
	k[i].show();
	}


	return 0;
}
и убери
Код:
#include "stdafx.h"
mixon-21 вне форума Ответить с цитированием
Старый 29.06.2013, 23:08   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

mixon-21, Зачем?) она ему не мешает
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 29.06.2013, 23:11   #5
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Код:
void show()								// вывода
	{
		cout<<"nazvanie ="<<nazv<<endl;
		cout<<"avtor ="<<avtor<<endl;
		cout<<"kolichestvo stranic ="<<str<<endl;
		cout<<"god izdaniya ="<<god<<endl;
          system("pause")
	}


	int ggod()					// возвращаем арг
	{
		return god;
         system("pause")
	}
mixon-21 вне форума Ответить с цитированием
Старый 29.06.2013, 23:12   #6
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Цитата:
Сообщение от kventin_zhuk Посмотреть сообщение
mixon-21, Зачем?) она ему не мешает
не красиво

Последний раз редактировалось mixon-21; 29.06.2013 в 23:23.
mixon-21 вне форума Ответить с цитированием
Старый 29.06.2013, 23:18   #7
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию

спасибо за помощь
что-то даже рассмеялся от своей невнимательности (ну действительно, как можно было пропустить "()" в методах )

насчет #include "stdafx.h" - можно поподробней? :р

и еще вопросик, как вызвать метод tekgod() ? и правильно ли он у меня оформлен-то? (там я пытался выполнить это условие: "выведите на экран список книг, выпущенных после заданного года.")


add for mixon-21 - да видел я сразу написал текст, чтобы время не терять, потом думал за помощь плюсануть, меня отвлекли, плюсанул, увидел твой пост, ответил, зачем я это пишу? не знаю :о

Последний раз редактировалось ovaaal; 29.06.2013 в 23:25.
ovaaal вне форума Ответить с цитированием
Старый 29.06.2013, 23:21   #8
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

спасибо слева на экране весы.
mixon-21 вне форума Ответить с цитированием
Старый 29.06.2013, 23:29   #9
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

ovaaal, Похоже на то - хотя тут один косячок. В метод вы передаете сам массив объектов. И вызывать метод будете тоже от какого-то объекта, так? Например:

Код:
k[i].CurrentYear(k);
не очень красиво правда, метод работающий с массивом объектов вызывается от объекта.

Поэтому добавьте перед описанием метода static

Код:
static void tekgod(Kniga *k)
и вызывать его из программы будете от имени класса, а именно вот так:

Код:
Kniga::tekgod(k);
Красивее?


P.S - где учишься, земляк :D
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 30.06.2013, 15:39   #10
ovaaal
Пользователь
 
Регистрация: 07.11.2011
Сообщений: 13
По умолчанию

Вроде во всем этом разобрался, но столкнулся с другой проблемой:

допустим есть вот такое задание:

Напишите программу на языке программирования С++, в которой создайте класс с именем PERSON с данными:
Фамилия, Имя, Пол, Образование, Год рождения. Класс должен включать методы, реализующие ввод информации и ее вывод.
В программе создайте массив объектов. Разработайте метод класса, с помощью которого выведите на экран
список граждан мужского пола с высшим образованием.


вот что вышло:
Код:
#include "stdafx.h"
#include <iostream>
#include <string>
#define N 2
using namespace std;

class Person
{
private:
	char lastname[20];
	char name[20];
	char pol[5];
	char obraz[5];
	int god;

public:

	void get()									// метод ввода данных
	{
		cout<<"vvedite familiu :"<<endl;
		cin>>lastname;
		cout<<"vvedite imya :"<<endl;
		cin>>name;
		cout<<"vvedite pol (mujskoi = m, jenskiy = j) :"<<endl;
		cin>>pol;
		cout<<"vvedite obrazovanie (vishee = v, srednee = s) : "<<endl;
		cin>>obraz;
		cout<<"vvedite god rozjdeniya :"<<endl;
		cin>>god;
	}

	void show()											// метод вывода
	{
		cout<<" Familiya = "<<lastname<<endl;
		cout<<" Imya = "<<name<<endl;
		cout<<" Pol = "<<pol<<endl;
		cout<<" Obrazovanie = "<<obraz<<endl;
		cout<<" God = "<<god<<endl;
	}

	char* spol()								// возвращ. арг.
	{
		return pol;
	}

	char* sobraz()								// возвращ. арг.
	{
		return obraz;
	}

	static void zadanie(Person* p)					// метод с условием из задания
	{
		char pol[5];
		char obraz[5];
		for (int i = 0; i<N; i++)
		
			if ((p[i].spol() == "m") && (p[i].sobraz() == "v"))
				p[i].show();
		

	}
};

int _tmain(int argc, _TCHAR* argv[])
{
	Person p[N];
	for (int i = 0; i<N; i++)
	{
		p[i].get();
		p[i].show();
		
	}

	Person::zadanie(p);	
	
	return 0;
}
метод zadanie() - почему-то выводит последнее введенное

да и явно не правильно описан этот метод

и в чем проблема не могу никак понять

offtop: kventin_zhuk, я не совсем в Минске учусь (даже совсем не в Минске ) немного стыдно даже сознаваться, в общем - колледж в Новом поле - НГАЭК (~20 км от Минска) там и учусь (поит - техник-программист)
ovaaal вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив объектов takeNmake Общие вопросы C/C++ 4 21.04.2013 18:32
Массив объектов!!! OliverVood Visual C++ 5 24.08.2012 16:03
массив объектов Freddi Krjuger Общие вопросы по Java, Java SE, Kotlin 3 18.02.2011 19:55
Массив объектов _bAd_ Помощь студентам 10 20.01.2010 08:33
массив объектов balamut JavaScript, Ajax 4 29.05.2009 14:49