XshStasX И вам удачи всегда и всюду =) Безусловно,"Через cin можно ввести данные." Но меня интересует , как присоединить, добавить запись к уже имеющимся( а не так,чтобы ввести информацию и потом папечатать всё вместе с этой информацией заново)
Что не так в ниже представленном методе сортировки?Почему 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(); } ;
ну во первых: тебя не смущает то что когда: i=i-1 то в этой строке будет обращение не известно куда ?(я имею ввиду ob[i+1].name, т.е получится ob.name) во вторых: Номер у тебя int,если верить посту #18. А переменная p типа char, как думаешь в чем тут ошибка ?)) предлагаю делать так: Код (Text): void telephonebook::sort_name(telephonebook * ob) { char c[80]; ; int j,x,p; for(j=0;j<k;j++) for(i=0;i<(k-1);i++) { x=strcmp(ob[i].name,ob[i+1].name); if(x>0) { strcpy(c,ob[i].name); strcpy(ob[i].name,ob[i+1].name); strcpy(ob[i+1].name,c); p=ob[i].nomer; ob[i].nomer=ob[i+1].nomer; ob[i+1].nomer=p; } } for (i=0;i<k;i++) cout<<ob[i].name<<" "<<ob[i].nomer<<"\n"; getch(); } ;
XshStasX Ура!всё сортируется =)Спасибо тебе, XshStasX- ты мастер своего дела+очень внимательный))) -------------------------------------------------------------------------------------------------- ВОПРОС:....если я хочу реализовать метод добавления нового имени к созданному справочнику, то я могу в теле этого метода вызывать другие методы, создающие массив объектов?
А как всё-таки метод добавления имени организовать?пробовала так- не получилось Код (Text): void telephonebook::new_nomer(telephonebook * ob) {char st[80];int q; cout<<"vvedite name i nomer:"<<"\n"; for( i=0; i<1; i++) {gets (st); ob[i].set_name(st); cin>>q; ob[i].set_nomer(q);} for(i=0;i<=k;i++) cout<<"\n"<<ob[i].get_name()<<" "<<ob[i].get_nomer(); getch(); } ;
Ещё один вариант метода добавления имени: всё отлично: имя добавляется, только при этом из справочника исчезает 1-е имя..Как этто можно усовершенствовать..??? Код (Text): void telephonebook::new_nomer(telephonebook * ob) {char st[80];int q; cout<<"vvedite name i nomer:"<<"\n"; for( i=0; i<1; i++) {gets (st); ob[i].set_name(st); cin>>q; ob[i].set_nomer(q);} for(i=0;i<k;i++) cout<<"\n"<<ob[i].get_name()<<" "<<ob[i].get_nomer(); getch(); } ;