Почему не получается удалить элемент дважды подряд?Метод удаления осуществляется путём перемещения значения последнего элеменнта на место удаляющегося.При этом удаляющийся отпраляется в конец и приобретает значение пустой строки. А с целым числом номеро ничего не остаётся сделать, как присвоить ему 0. Как изменить метод удаления элемента из класса? Код (Text): #include<iostream.h> #include<conio.h> #include<stdio.h> #include<string.h> #define k 4 int i; class telephonebook {char name[10]; int nomer; public: void set_name(char st[10]) {strcpy(name,st);} void set_nomer(int p) {nomer=p;} char *get_name() {return name;} int get_nomer() {return nomer;} void sort_name(telephonebook * ob); void search_nomer(telephonebook * ob); void new_nomer(telephonebook * ob); void delet_nomer(telephonebook * ob); }; void telephonebook::search_nomer(telephonebook * ob) {char sss[80]; cout<<" vvedite name"<<"\n"; gets(sss); for(i=0;i<k;i++) if(strcmp(sss,ob[i].name)==0) cout<<"vvedennoe name: "<<ob[i].name<<" ;nomer telephona="<<ob[i].nomer<<"\n"; getch(); } ; 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; } } cout<<"\n"<<"posle sortirjvki: "<<"\n"; for (i=0;i<k;i++) cout<<ob[i].name<<" "<<ob[i].nomer<<"\n"; getch(); } ; void telephonebook::delet_nomer(telephonebook * ob) {int zz; cout<<"vvedite nomer of name"<<"\n"; cin>>zz; cout<<"\n"; if (zz>k) cout<<"error"; else for(i=0;i<k;i++) if(i==zz) {strcpy(ob[i].name," "); strcpy(ob[i].name,ob[k-1].name); strcpy(ob[k-1].name," "); ob[i].nomer=ob[k-1].nomer; } for(i=0;i<k-1;i++) cout<<ob[i].name<<" "<<ob[i].nomer<<"\n"; getch(); } ; void telephonebook::new_nomer(telephonebook * ob) {char st[80];int q; cout<<"vvedite name i nomer:"<<"\n"; for( i=k-1; i<k; 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(); } ; void main() { clrscr(); char str[10]; int b; telephonebook obj[k]; cout<<"vvedite name i nomer:"<<"\n"; for( i=0; i<k-1; i++) {gets (str); obj[i].set_name(str); cin>>b; obj[i].set_nomer(b); } for(i=0;i<k-1;i++) cout<<"\n"<<obj[i].get_name()<<" "<<obj[i].get_nomer(); getch(); char ch,f[6]; while (ch!='5') { cout<<"\n"<<" menu:"<<"\n"; cout<<"1-dobavlenie"<<"\n"; cout<<"2-poisk"<<"\n"; cout<<"3-sort"<<"\n"; cout<<"4-udalenie"<<"\n"; cout<<"5=vichod"<<"\n"; ch=getch(); switch(ch) {case '1': obj[i].new_nomer(obj); break; case '2': obj[i].search_nomer(obj); break; case '3': obj[i].sort_name(obj); break; case '4': obj[i].delet_nomer(obj); break; }; }; }
Luna Во-первых, вы же программируете на C++? Так зачем подключать conio.h stdio.h string.h, если они относятся с Си?