Как включить в уже имеющийся массив строк новую строку, не используя strcmp? Или как включить в созданный массив объектов новый объект?
make и всёёё?кстати ошибка- не используя strcpy(ну это и так понятно)... Нет, ну правда тяжело понять: как это : если уже в главной функции main() создали n объектов, а потом...-вызвав метод, добавляем к этим n объектам ещё один... Как же включить этот новым объект ко всем существующим??????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Luna тебе правильно сказали std::vector ( динамический массив) если ты создаёш просто массив( статический), то нужно создать второй массив, увеличенный , и скопировать туда старый, с новыми данными. неплохая ссылка http://www.solarix.ru/for_developers/cpp/stl/stl.shtml , правда там есть мелкие деффекты, но для начала самое то
Снова выделить память на N+1 объект; скопировать существующие N объектов + 1 новый; освободить старую память.
wsd так сложнооо?нет, эта задача обязана проще решаться)))))) 7mm вооот, именно это я и имею ввиду...XD...Как это программным образом сделать...Неужели в теле метода написать что-то типа: Код (Text): telephonebook obj[k+1]; strcpy( telephonebook obj[k+1], telephonebook obj[k]);
Luna а я тебе что написал элементарно очевидну вешь освободить старую память. , т.е. "подчтстить за собой" я не писал, а всё остальное также. и я тебе рекомдую всё-таки пользоваться стл
Ну тебе надо просто список сделать. В интернетике бы посмотрела что ли. Ну что-то как-то так(с)пёрто. #include <stdio.h> #include <stdlib.h> typedef struct _ELEMENT { char *student; char *group; char *date; int headMark; struct _ELEMENT *next,*prev; }TElement; typedef struct _LIST { TElement *head, //Указатель на первый элемент *curr, //Указатель на текущий элемент *tail; //Указатель на последний элемент }TList; int InitElement( TElement **el, char *_student, char *_group, char *_date, int _headMark ) { *el = (TElement *)malloc(sizeof(TElement)); if (*el) { (*el)->student= _student; (*el)->group= _group; (*el)->date= _date; (*el)->headMark= _headMark; } return 0; } //-------------------------------------------------------------- void ListCreate( TList **list ) { *list = (TList *)malloc(sizeof(TList)); //Инициализация указателей if (*list) (*list)->head= (*list)->curr= (*list)->tail= NULL; } void AppendElement(TList *lst, TElement *el) { TElement *tmp; if ( lst->head == NULL ) //Если список пустой (нет элементов) { lst->head= el; lst->tail= el; lst->curr= el; lst->head->prev= NULL; lst->head->next= NULL; } else { tmp= lst->tail; lst->tail= el; lst->tail->prev= tmp; lst->tail->next= NULL; } //return 0; //Успешное завершение } int main() { TList *list; TElement *el; InitElement(&el,"Petrenko","07-itz","09.11.2009",5); ListCreate(&list); AppendElement(list, el); InitElement(&el,"Shed'ko","07-itz","08.11.2009",9); AppendElement(list, el); printf("%d", list->curr->headMark); return 0; }
Ту типа того.. Выделяете память, например используя malloc(). Копируете, например используя memcpy()... Код (Text): ... newbook = malloc(booitems + 1); copy_to(newbook, book, bookitems); copy_to(newbook + bookitems, newitem, 1); free(book); book = newbook ... Как-то так
MEPOX ничего, всё отлично главное:понятно и познавательно. в общем- пригодится эта всё))) Booster Может, для тебя и интереснее, а я Делом занимаюсь 7mm Спасиибо, Серёж=)..Правда эту конструкцию ещё осмыслить предстоит А мой код пойдёт?Всё выводится вместе с добавлением...только п р о б л е м а остаётся: не могу реализовать другие методы после реализации метода добавления: ведь они расчитаны для n объектов, а не для (n+1)...Эх,как тут быть? Код (Text): void telephonebook::new_nomer(telephonebook * ob) {char st[80];int q; cout<<"vvedite name i nomer:"<<"\n"; telephonebook obj[k+1]; for( i=k; i<k+1; i++) {gets (st); ob[i].set_name(st); cin>>q; ob[i].set_nomer(q);} for(i=0;i<k+1;i++) cout<<"\n"<<ob[i].get_name()<<" "<<ob[i].get_nomer(); getch(); } ;
Дорогая Luna-а, это всё азы, которые разжёваны в любой книге по Си. Поверьте, вы поймёте намного больше из книг, нежели спрашивая на форумах. Вы никак не поймёте, что захламляете форум нубскими вопросами, которым здесь не место.
1. telephonebook перенесите в private класса. 2. Создавайте её динамически через new. 3. Обращайтесь к ней через this.
Booster Цитирую: Ээто раздел для новичков, которые чувствуют себя неопытными" в этих вопросах. И если , в результате спрашивания понимаешь, то, что надо- почему бы не спросить.Для вас- это, естественно, элементарно. потому что вы этим каждый божий час в течении жизни занимаетесь; но жалко. что иные виды деятельности обошли вас стороной: жизнь всё-таки должна быть разнообразной..И мои личные лекции лучше любой прочитанной мною книги по с++..В книгах много всего, да не по делу и черезчур заумно описано.................=)=)=)=)=).......много количества. мало качества..Легче учить не по теории, а по практике..Вот я и практикуюсь .55555555555555555555555555555555555555555555555555555555555 7mm Спасиб ну а мой последний код как?
Luna, хоть вы и не спрашивали, думаю, будет полезно что-то такое: http://blogs.msdn.com/brada/articles/361363.aspx Вопрос насчет правильного стандарта оформления спорный, что именно лучше. Просто привел пример. А то код читать без "перелопачивания" крайне сложно.