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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 23:19   #1
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
Сообщение массив строк.

Есть класс. Есть возможность ввода одного имени и вывода его же.
проблема: как вводить и выводить n-имен? (не получается выделить денимическую память под массив строк и вводить в этот массив)
т.е. нужно:
сколько ввести - ,например, 3.
вводим их (3 шт.)
выводим (3 шт)
Код:
class b
{   
private:
 char *name;
public:
	b(){int m=0;}

	void add(int);
	void show(int);
};

void b::add(int n)
{
name=new char[30];
cout<<" name:";
cin>>name;
}

void b::show(int n)
{
cout<<"::"<<name<<endl;
}
void main()
{
	int n;
	cout<<" input n :"<<endl;
	cin>>n;
	b obj;
	obj.add(n);
	obj.show(n);
	system("PAUSE");
}
zhenya.ya вне форума Ответить с цитированием
Старый 23.09.2010, 23:45   #2
Tema_Crazzzy
Форумчанин
 
Регистрация: 29.04.2010
Сообщений: 114
По умолчанию

1) Вы передаете функциям add() и show() параметр n и не используете его в этих фукциях.
2) Если вам надо работать с n объектами то лучше использовать класс vector

В вашем же случае:
Код:
....
char **name;
....
void b::add(int n)
{
        char str[60];
        name=new char*[n];
        for (int i=0;i<n;i++)
        {
                 scanf("%s",&str);
                 name[i]=new char[strlen(str)];
                 strcpy(name[i],str);
         }
}
........................
     
void b::show(int n)
{
       for (int i=0;i<n;i++) cout<<name[i]<<end;
}

.........................

delete [] name;

Последний раз редактировалось Tema_Crazzzy; 23.09.2010 в 23:47.
Tema_Crazzzy вне форума Ответить с цитированием
Старый 24.09.2010, 00:14   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Tema_Crazzzy
Цитата:
name[i]=new char[strlen(str)];
место для завершающего нуля хдеееееееееееее? остальной код не смотрел
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив строк L_Killer Помощь студентам 2 30.05.2010 01:58
Массив строк Siluet Помощь студентам 2 30.05.2009 07:38
Массив строк С++ Nina+ Помощь студентам 1 01.04.2009 23:22
задача на массив строк hijack Помощь студентам 0 26.11.2007 23:10