Включение

Тема в разделе "WASM.BEGINNERS", создана пользователем Luna, 11 май 2010.

  1. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Как включить в уже имеющийся массив строк новую строку, не используя strcmp?
    Или как включить в созданный массив объектов новый объект?
     
  2. make

    make New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2009
    Сообщения:
    59
    std::vector
     
  3. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    make
    и всёёё?кстати ошибка- не используя strcpy(ну это и так понятно)...
    Нет, ну правда тяжело понять: как это : если уже в главной функции main() создали n объектов, а потом...-вызвав метод, добавляем к этим n объектам ещё один...
    Как же включить этот новым объект ко всем существующим??????????%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
  4. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Luna
    тебе правильно сказали std::vector ( динамический массив)
    если ты создаёш просто массив( статический), то нужно создать второй массив, увеличенный ,
    и скопировать туда старый, с новыми данными.
    неплохая ссылка http://www.solarix.ru/for_developers/cpp/stl/stl.shtml , правда там есть мелкие деффекты,
    но для начала самое то
     
  5. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Снова выделить память на N+1 объект; скопировать существующие N объектов + 1 новый; освободить старую память.
     
  6. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    wsd
    так сложнооо?нет, эта задача обязана проще решаться))))))

    7mm
    вооот, именно это я и имею ввиду...XD...Как это программным образом сделать...Неужели в теле метода написать что-то типа:
    Код (Text):
    1. telephonebook obj[k+1];
    2. strcpy(  telephonebook obj[k+1],    telephonebook obj[k]);
     
  7. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Luna
    а я тебе что написал
    элементарно очевидну вешь освободить старую память. , т.е. "подчтстить за собой" я не писал,
    а всё остальное также.
    и я тебе рекомдую всё-таки пользоваться стл
     
  8. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    Ну тебе надо просто список сделать.

    В интернетике бы посмотрела что ли. Ну что-то как-то так(с)пёрто.

    #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;
    }
     
  9. MEPOX

    MEPOX New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2008
    Сообщения:
    259
    тьфу. про bb не подумал.
     
  10. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Ту типа того.. Выделяете память, например используя malloc(). Копируете, например используя memcpy()...

    Код (Text):
    1. ...
    2. newbook = malloc(booitems + 1);
    3. copy_to(newbook, book, bookitems);
    4. copy_to(newbook + bookitems, newitem, 1);
    5.  
    6. free(book);
    7. book = newbook
    8. ...
    Как-то так :)
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Luna
    Книги читать не пробовала?
     
  12. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Хотя по телефону трещать конечно куда интереснее.
     
  13. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    MEPOX
    ничего, всё отлично ;)главное:понятно и познавательно. в общем- пригодится эта всё)))
    Booster
    Может, для тебя и интереснее, а я Делом занимаюсь :lol:

    7mm
    Спасиибо, Серёж=)..Правда эту конструкцию ещё осмыслить предстоит ;)


    А мой код пойдёт?Всё выводится вместе с добавлением...только п р о б л е м а остаётся: не могу реализовать другие методы после реализации метода добавления: ведь они расчитаны для n объектов, а не для (n+1)...Эх,как тут быть?

    Код (Text):
    1.    void telephonebook::new_nomer(telephonebook * ob)
    2.    {char st[80];int q;
    3.     cout<<"vvedite name i nomer:"<<"\n";
    4.  
    5.     telephonebook obj[k+1];
    6.  
    7.  
    8.  
    9.       for( i=k; i<k+1; i++)
    10.  
    11.   {gets (st);
    12.   ob[i].set_name(st);
    13.   cin>>q;
    14.   ob[i].set_nomer(q);}
    15.  
    16.     for(i=0;i<k+1;i++)
    17.   cout<<"\n"<<ob[i].get_name()<<"  "<<ob[i].get_nomer();
    18.   getch();
    19.  
    20.  
    21.     }  ;
     
  14. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Дорогая Luna-а, это всё азы, которые разжёваны в любой книге по Си. Поверьте, вы поймёте намного больше из книг, нежели спрашивая на форумах. Вы никак не поймёте, что захламляете форум нубскими вопросами, которым здесь не место.
     
  15. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    1. telephonebook перенесите в private класса.
    2. Создавайте её динамически через new.
    3. Обращайтесь к ней через this.
     
  16. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Booster
    Цитирую: Ээто раздел для новичков, которые чувствуют себя неопытными" в этих вопросах. И если , в результате спрашивания понимаешь, то, что надо- почему бы не спросить.Для вас- это, естественно, элементарно. потому что вы этим каждый божий час в течении жизни занимаетесь; но жалко. что иные виды деятельности обошли вас стороной: жизнь всё-таки должна быть разнообразной..И мои личные лекции лучше любой прочитанной мною книги по с++..В книгах много всего, да не по делу и черезчур заумно описано.................=)=)=)=)=).......много количества. мало качества..Легче учить не по теории, а по практике..Вот я и практикуюсь ;).55555555555555555555555555555555555555555555555555555555555

    7mm
    Спасиб ;)ну а мой последний код как?
     
  17. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    Luna, хоть вы и не спрашивали, думаю, будет полезно что-то такое:

    http://blogs.msdn.com/brada/articles/361363.aspx

    Вопрос насчет правильного стандарта оформления спорный, что именно лучше. Просто привел пример. А то код читать без "перелопачивания" крайне сложно.
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    To all:
    Не ведитесь на её провокации, это просто тролль. Ещё и оскорбляет.
     
  19. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Пускай платит баблос и не парит людям мозги.
     
  20. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    УжОс.