Реализация методов класса.

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

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Через cin можно ввести данные.
    Код (Text):
    1. int i;
    2. char text;
    3. cin >>i;
    4. cin >>text;
     
  2. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    XshStasX
    И вам удачи всегда и всюду =)

    Безусловно,"Через cin можно ввести данные." Но меня интересует , как присоединить, добавить запись к уже имеющимся( а не так,чтобы ввести информацию и потом папечатать всё вместе с этой информацией заново)
     
  3. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Что не так в ниже представленном методе сортировки?Почему 10% информации в результате сортировки искажается?

    void telephonebook::sort_name(telephonebook * ob)
    {char c[80]; char p;
    int j,x;
    for(j=0;j<k;j++)
    for(i=0;i<k;i++)
    {x=strcmp(ob.name,ob[i+1].name);
    if(x>0)
    {strcpy(c,ob.name);
    strcpy(ob.name,ob[i+1].name);
    strcpy(ob[i+1].name,c);
    p=ob.nomer;
    ob.nomer=ob[i+1].nomer;
    ob[i+1].nomer=p; }
    }
    for (i=0;i<k;i++)
    cout<<ob.name<<" "<<ob.nomer<<"\n";
    getch();
    } ;
     
  4. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    ну во первых:

    тебя не смущает то что когда:
    i=i-1
    то в этой строке

    будет обращение не известно куда ?(я имею ввиду ob[i+1].name, т.е получится ob.name)
    во вторых:

    Номер у тебя int,если верить посту #18.
    А переменная p типа char, как думаешь в чем тут ошибка ?))

    предлагаю делать так:
    Код (Text):
    1.  void  telephonebook::sort_name(telephonebook * ob)
    2.  {
    3.   char c[80]; ;
    4.     int j,x,p;
    5.  
    6.     for(j=0;j<k;j++)
    7.       for(i=0;i<(k-1);i++)
    8.       {
    9.        x=strcmp(ob[i].name,ob[i+1].name);
    10.         if(x>0)
    11.         {
    12.           strcpy(c,ob[i].name);
    13.           strcpy(ob[i].name,ob[i+1].name);
    14.           strcpy(ob[i+1].name,c);
    15.          
    16.           p=ob[i].nomer;
    17.           ob[i].nomer=ob[i+1].nomer;
    18.           ob[i+1].nomer=p;  }
    19.       }
    20.  
    21.   for (i=0;i<k;i++)
    22.       cout<<ob[i].name<<"  "<<ob[i].nomer<<"\n";
    23.  
    24.       getch();
    25. } ;
     
  5. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    XshStasX
    Ура!всё сортируется =)Спасибо тебе, XshStasX- ты мастер своего дела+очень внимательный)))
    --------------------------------------------------------------------------------------------------


    ВОПРОС:....если я хочу реализовать метод добавления нового имени к созданному справочнику, то я могу в теле этого метода вызывать другие методы, создающие массив объектов?
     
  6. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    А как всё-таки метод добавления имени организовать?пробовала так- не получилось
    Код (Text):
    1.    void telephonebook::new_nomer(telephonebook * ob)
    2.    {char st[80];int q;
    3.     cout<<"vvedite name i nomer:"<<"\n";
    4.  
    5.  
    6.       for( i=0; i<1; i++)
    7.  
    8.   {gets (st);
    9.   ob[i].set_name(st);
    10.   cin>>q;
    11.   ob[i].set_nomer(q);}
    12.  
    13.     for(i=0;i<=k;i++)
    14.   cout<<"\n"<<ob[i].get_name()<<"  "<<ob[i].get_nomer();
    15.   getch();
    16.  
    17.  
    18.     }  ;
     
  7. Luna

    Luna New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2009
    Сообщения:
    288
    Ещё один вариант метода добавления имени: всё отлично: имя добавляется, только при этом из справочника исчезает 1-е имя..Как этто можно усовершенствовать..???

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