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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 16:52   #11
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Вот вам код со счетчиком
Код:
//Word.h
#ifndef WORDH
#define WORDH

class Word 
{
	static int counter; //счетчик
	char* m_word;
	int   m_wordlen;

public:
	Word(char* word) 
	{
		++counter;    //при создании очередного объекта увеличиваем счетчик
		m_word = word;
		m_wordlen = strlen(word);
	}

	int getlen() const 
	{
		return m_wordlen;
	}
	int getObjectCount() const //метод возвращает количество объектов класса (возможно тоже должен быть статическим, не помню точно)
	{
		return counter;
	}
};
#endif
Код:
//main.cpp
#include <iostream>
#include "Word.h"

int Word::counter = 0;   //инициализируем счетчик

int main()
{
	Word words[4] = { "One", "Two", "Three", "Four" };
	for(int i = 0; i < 3; i++)
		for(int j = i+1; j < 4; j++)
			if(words[i].getlen() > words[j].getlen()) {
				Word temp = words[i];
				words[i] = words[j];
				words[j] = temp;
			}
}
MaTBeu вне форума Ответить с цитированием
Старый 21.12.2009, 18:17   #12
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Матвей, твой пример опять для массива объектов, а девушке нужно все объекты отсортировать, которые создавались разными способами, возможно одиночно...
ПРимечательно к твоему коду - в деструкторе декремент счетчика надо делать, чтобы знать текущее кол-во объектов....

Кстати в данной задаче возможна трудность без этого - так как при копировании или передачи объекта в функцию по значению будет создаваться его копия, она, естественно, тоже увеличит счетчик...Хотя бы ПОэтому декремент необходим
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 21.12.2009, 18:28   #13
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от RoS Посмотреть сообщение
Классно ты задвинул - МАссив классов
А по теме - вдруг девушке надо посчитать все объекты, созданные и без массива, и не с помощью new, а прост овсе объекты, которые сейчас существуют? ну и соответственно отсортировать...считать их и записывать указатели на них в массив какой-нибудь
Считать, естественно, с помощью статистической переменной да и сортировку по идее можно статистической функцией...
Массив классов я написал, дабы не смущать девушку излишней терминологией )
Насчёт статического счётчика, что за глупость? Зачем это? Если кол-ство слов изначально неопределено, то можно использовать vector и сим ограничится. Что за бредни про сортировку объектов классов, созданных разным способом? Ну будет у Вас счётчик, будете Вы знать сколько их, но сортировать как собираетесь? Раз они созданы разными способами, значит и доступ к ним разный, если вообще существует в некой области видимости.
2Konicy, да, это массив слов, и можно делать так:
Код:
char a[10];
cin >> a;
Word word(a);
С этим никаких проблем нет, для множества слов необходимо завести массив объектов( RoS )
Код:
char a[10];
Word words[5];
for(int i = 0; i < 5; i++) {
   cin >> a;
   words[i].setWord(a);
}

//  а в класс добавить метод setWord
class Word {
...
public:
...
void setWord(const char* w) {
    m_word = w;
    m_wordlen = strlen(w);
}
};

Последний раз редактировалось netrino; 21.12.2009 в 19:03. Причина: объектов! :)
netrino вне форума Ответить с цитированием
Старый 21.12.2009, 18:35   #14
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

RoS
Я просто показзал, как убрать ошибку компилятора. С массивом код я взял из предыдущего поста.
Цитата:
Сообщение от netrino
Насчёт статического счётчика, что за глупость? Зачем это? Если кол-ство слов изначально неопределено, то можно использовать vector и сим ограничится. Что за бредни про сортировку классов, созданных разным способом? Ну будет у Вас счётчик, будете Вы знать сколько их, но сортировать как собираетесь? Раз они созданы разными способами, значит и доступ к ним разный, если вообще существует в некой области видимости.
Верно подмечено про вектор. Однако, я думаю, преподаватель хочет, чтобы человек сам сделал алгоритм сортировки массива объектов, а не схалтурил STL'евским sort'ом.
MaTBeu вне форума Ответить с цитированием
Старый 21.12.2009, 18:47   #15
Konicy
Пользователь
 
Регистрация: 17.12.2009
Сообщений: 14
По умолчанию

Да! Спасибо! С отдельным файлом намного удобнее))
Компилятор больше не ругается, но деструктор не работает. Такой вот:
Код:
~Word(){
		delete [] m_word;
		counter--;
	}
Что в нем не правильно?

Так что, наверное, массив объектов будет действительно лучшим вариантом Для сортировки. А для подсчета количества слов счетчик работает хорошо. Спасибо!
Цитата:
Если кол-ство слов изначально неопределено, то можно использовать vector и сим ограничится
Обязательно изучу эту тему, как только сдам сессию! Давно слышала, что полезная вещь... Просто у нас в универе сейчас вообще С, а я его не люблю, так как в нем классов нет, и все неудобно) Вот и осваиваю самостоятельно просторы С++
Konicy вне форума Ответить с цитированием
Старый 21.12.2009, 19:08   #16
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от Konicy Посмотреть сообщение
Да! Спасибо! С отдельным файлом намного удобнее))
Компилятор больше не ругается, но деструктор не работает. Такой вот:
Код:
~Word(){
		delete [] m_word;
		counter--;
	}
Что в нем не правильно?

Так что, наверное, массив объектов будет действительно лучшим вариантом Для сортировки. А для подсчета количества слов счетчик работает хорошо. Спасибо!

Обязательно изучу эту тему, как только сдам сессию! Давно слышала, что полезная вещь... Просто у нас в универе сейчас вообще С, а я его не люблю, так как в нем классов нет, и все неудобно) Вот и осваиваю самостоятельно просторы С++
В деструкторе и не должно быть delete, деструктор вызывается тогда, когда вызывается delete, а не наоборот!
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с классом и объектами!!! Sudeki Помощь студентам 0 13.12.2009 15:20
Проблема с классом list Homer_J_Simpson Общие вопросы C/C++ 4 28.11.2009 22:03
Работа с Классом и кое что по OpenGl Seran4ek Помощь студентам 7 28.11.2009 21:11
Работа с классом TStringStream в Borland C++ profi Общие вопросы C/C++ 2 26.07.2009 20:14
C++ работа с классом VadEr Помощь студентам 2 17.05.2009 12:33