Смекни!
smekni.com

Объектно ориентированое програмирование на С (стр. 2 из 2)

{

current=current->down;

return 1;

};

return 0;

};

//Esli pred. element sdelalsa tekuschim return 1, else 0

int list::previous_element()

{

if (current->up)

{

current=current->up;

return 1;

};

return 0;

};

int list::num_current()

{

if(current==NULL)return 0;

int i(1);

element* temp=current;

while (temp->up!=NULL)

{

i++;

temp=temp->up;

};

return i;

};

char* list::read_element()

{

return current->info;

};

char* list::read_element(int &k)

{

int i;

i=current_element(k);

if ((i<k)&&(i!=0))

{

cout<<"V spiske vsego "<<i<<" elmentov. Po etomu vmesto "<<k<<" elementa, functsia vozvrashchaet "<<i<<" element!!!&bsol;n";

k=i;

};

return current->info;

};

void list::init_list(int k, char* str)

{

if (k==0) return;

int f(2);

char* s;

s=new char[strlen(str)+7];

if (first!=NULL)

{

cout<<"Spisok ne pust!!!&bsol;n";

cout<<"Chto delat?(0/1/2)&bsol;n";

cout<<" 0)Otmenit initsializatsiu;&bsol;n";

cout<<" 1)Dopisat fonarnuu infomatsiu v konets spiska;&bsol;n";

cout<<" 2)Zamenit spisok novoi fonarnoi informatsyei.&bsol;n";

cin>>f;

};

if(f==0) return;

if(f==1) current=last;

if(f==2)

{

del_list();

first=new element[1];

first->info=new char[strlen(str)+3];

sprintf(first->info,"%s 1",str);

first->up=first->down=NULL;

current=last=first;

};

for (int j=f; j<=k; j++)

{

sprintf(s,"%s %d",str,j);

add_after(s);

};

return;

};

void list::print_list()

{

cout<<"Vmestimoe spiska:&bsol;n";

element* temp=first;

if (first==NULL)

{

cout<<"Spisok pust!!!&bsol;n";

return;

};

do

{

cout<<"| "<<temp->info<<" |";

temp=temp->down;

}

while (temp);

cout<<"&bsol;n";

return;

};

int list::fput_list(char* s)

{

FILE* f;

if ((f=fopen(s,"w+"))==NULL)

{

cout << "Can not open file "<<s<<"&bsol;n";

return 0;

};

if (!first) fclose(f);

element* temp=first;

do

{

fputs(temp->info,f);

fputs("&bsol;n",f);

temp=temp->down;

}

while (temp);

fclose(f);

return 1;

};

int list::fget_list(char* s)

{

int ff=2;

if (first!=NULL)

{

cout<<"Spisok ne pust!!!&bsol;nChto delat?(0/1/2)&bsol;n 0)Otmenit vostanovlenie iz faila;&bsol;n";

cout<<" 1)Vostanovit infomatsiu iz faila v konets spiska;&bsol;n";

cout<<" 2)Zamenit spisok informatsyei iz faila.&bsol;n";

cin>>ff;

};

if(!ff) return ff;

FILE* f;

if ((f=fopen(s,"r"))==NULL)

{

cout<<"Can not open file "<<s<<"&bsol;n";

return 0;

};

char str[255];

if(ff==1)

current=last;

char *sss;

if(ff==2)

del_list();

while (fgets(str,256,f))

{

sss=new char[strlen(str)];

int j=0;

while(str[j]!='&bsol;n')

sss[j]=str[j++];

sss[j]='&bsol;0';

add_after(sss);

delete [] sss;

};

fclose(f);

return ff;

};

#endif

#include "list_.h"

void main()

{

int n=16;

cout<<"Rozhdenie spiska...&bsol;n";

list s;

char a[255];

strcpy(a,"Seha");

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list();

cout<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

cout<<"Skol'ko proinitsializirovat' elementov spiska?&bsol;nn=";

cin>>n;

cout<<"Initsialitsia spiska...&bsol;n";

s.init_list(n,a);

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list();

cout<<"&bsol;nTekuschiy element spiska: ";

cout<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();//clear iostream

getchar();

cout<<"Kakoi element v spiske sdelat' tekeschim?&bsol;nn=";

cin>>n;

s.current_element(n);

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Skol'ko elementov dobavit'?&bsol;n";

cin>>n;

getchar();//clear iostream

for (int i=0; i<n; i++)

{

cout<<"Vvedite stroku dlja dobavlenija v spisok&bsol;n";

gets(a);

cout<<"Dobavlenie posle tekuschego...&bsol;n";

s.add_after(a);

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

};

cout<<"Delaem tekuschim sledujushiy element...&bsol;n";

s.next_element();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?&bsol;n";

cin>>n;

getchar();//clear iostream

for (int i=0; i<n; i++)

{

cout<<"Vvedite stroku dlja dobavlenija v spisok&bsol;n";

gets(a);

cout<<"Dobavlenie do tekuschego...&bsol;n";

s.add_before(a);

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

};

cout<<"Skol'ko eschje elementov spiska nuzhno dobavit'?&bsol;n";

cin>>n;

getchar();//clear iostream

for (int k,i=0; i<n; i++)

{

cout<<"Vvedite stroku dlja dobavlenija v spisok&bsol;n";

gets(a);

cout<<"Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element&bsol;n";

cin>>k;

cout<<"Dobavlenie "<<k<<"-togo elementa...&bsol;n";

s.add_element(a,k);

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();//clear iostream

getchar();

};

cout<<"Kakoi element v spiske sdelat' tekeschim?&bsol;nn=";

cin>>n;

s.current_element(n);

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Skol'ko elementov udalit'?&bsol;n";

cin>>n;

getchar();//clear iostream

for (int i=0; i<n; i++)

{

cout<<"Udalenie tekuschego...&bsol;n";

s.del_element();

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

};

cout<<"Skol'ko eschje elementov spiska nuzhno udalit?&bsol;n";

cin>>n;

getchar();//clear iostream

for (int k,i=0; i<n; i++)

{

cout<<"Vvedite nomer elementa, kotoryi nuzhno udalit'&bsol;n";

cin>>k;

cout<<"Udalenie "<<k<<"-togo elementa...&bsol;n";

s.del_element(k);

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();//clear iostream

getchar();

};

cout<<"Zapis' spiska v fail...&bsol;n";

s.fput_list("Seha.lsm");

cout<<"Udalenie spiska...&bsol;n";

s.del_list();

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

cout<<"Vostanovlenie spiska...&bsol;n";

s.fget_list("Seha.lsm");

s.print_list();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

cout<<"Delaem tekuschim predyduschiy element...&bsol;n";

s.previous_element();

cout<<"&bsol;nVsego elementov v spiske: "<<s.num_list()<<"&bsol;nTekuschiy element spiska: "<<s.num_current()<<'&bsol;n';

cout<<"Press <Enter> for go on...&bsol;n";

getchar();

cout<<"Press <Enter> for exit...";

getchar();

};

Результат:

D:&bsol;Studies&bsol;Labs&bsol;Programing&bsol;Labs&bsol;Cpp&bsol;Individ_6&bsol;ind2>ind2

Rozhdenie spiska...

Vmestimoe spiska:

Spisok pust!!!

Vsego elementov v spiske: 0

Tekuschiy element spiska: 0

Press <Enter> for go on...

Skol'ko proinitsializirovat' elementov spiska?

n=9

Initsialitsia spiska...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 9

Tekuschiy element spiska: 9

Press <Enter> for go on...

Kakoi element v spiske sdelat' tekeschim?

n=6

Vsego elementov v spiske: 9

Tekuschiy element spiska: 6

Skol'ko elementov dobavit'?

3

Vvedite stroku dlja dobavlenija v spisok

Sveta 1

Dobavlenie posle tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Seha 7 || Seha 8

|| Seha 9 |

Vsego elementov v spiske: 10

Tekuschiy element spiska: 7

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

Sveta 2

Dobavlenie posle tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Seha 7

|| Seha 8 || Seha 9 |

Vsego elementov v spiske: 11

Tekuschiy element spiska: 8

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

Sveta 3

Dobavlenie posle tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 12

Tekuschiy element spiska: 9

Press <Enter> for go on...

Delaem tekuschim sledujushiy element...

Vsego elementov v spiske: 12

Tekuschiy element spiska: 10

Press <Enter> for go on...

Skol'ko eschje elementov spiska nuzhno dobavit'?

3

Vvedite stroku dlja dobavlenija v spisok

Svitlana 1

Dobavlenie do tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 13

Tekuschiy element spiska: 10

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

Svitlana 2

Dobavlenie do tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 14

Tekuschiy element spiska: 10

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

Svitlana 3

Dobavlenie do tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 15

Tekuschiy element spiska: 10

Press <Enter> for go on...

Skol'ko eschje elementov spiska nuzhno dobavit'?

3

Vvedite stroku dlja dobavlenija v spisok

I

Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element

10

Dobavlenie 10-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || I || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 16

Tekuschiy element spiska: 10

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

like

Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element

11

Dobavlenie 11-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || I || like || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 17

Tekuschiy element spiska: 11

Press <Enter> for go on...

Vvedite stroku dlja dobavlenija v spisok

you!!!

Vvedite nomer elementa, na kakoe mesto nuzhno dobavit' novyi element

12

Dobavlenie 12-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 4 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta

3 || I || like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 ||

Seha 9 |

Vsego elementov v spiske: 18

Tekuschiy element spiska: 12

Press <Enter> for go on...

Kakoi element v spiske sdelat' tekeschim?

n=4

Vsego elementov v spiske: 18

Tekuschiy element spiska: 4

Skol'ko elementov udalit'?

3

Udalenie tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 5 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I ||

like || you!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 17

Tekuschiy element spiska: 4

Press <Enter> for go on...

Udalenie tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Seha 6 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || yo

u!!! || Svitlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 16

Tekuschiy element spiska: 4

Press <Enter> for go on...

Udalenie tekuschego...

Vmestimoe spiska:

| Seha 1 || Seha 2 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Sv

itlana 3 || Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 15

Tekuschiy element spiska: 4

Press <Enter> for go on...

Skol'ko eschje elementov spiska nuzhno udalit?

3

Vvedite nomer elementa, kotoryi nuzhno udalit'

2

Udalenie 2-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |

| Svitlana 2 || Svitlana 1 || Seha 7 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 14

Tekuschiy element spiska: 2

Press <Enter> for go on...

Vvedite nomer elementa, kotoryi nuzhno udalit'

12

Udalenie 12-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |

| Svitlana 2 || Svitlana 1 || Seha 8 || Seha 9 |

Vsego elementov v spiske: 13

Tekuschiy element spiska: 12

Press <Enter> for go on...

Vvedite nomer elementa, kotoryi nuzhno udalit'

12

Udalenie 12-togo elementa...

Vmestimoe spiska:

| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |

| Svitlana 2 || Svitlana 1 || Seha 9 |

Vsego elementov v spiske: 12

Tekuschiy element spiska: 12

Press <Enter> for go on...

Zapis' spiska v fail...

Udalenie spiska...

Vmestimoe spiska:

Spisok pust!!!

Vsego elementov v spiske: 0

Tekuschiy element spiska: 0

Press <Enter> for go on...

Vostanovlenie spiska...

Vmestimoe spiska:

| Seha 1 || Seha 3 || Sveta 1 || Sveta 2 || Sveta 3 || I || like || you!!! || Svitlana 3 |

| Svitlana 2 || Svitlana 1 || Seha 9 |

Vsego elementov v spiske: 12

Tekuschiy element spiska: 12

Press <Enter> for go on...

Delaem tekuschim predyduschiy element...

Vsego elementov v spiske: 12

Tekuschiy element spiska: 11

Press <Enter> for go on...

Press <Enter> for exit...

D:&bsol;Studies&bsol;Labs&bsol;Programing&bsol;Labs&bsol;Cpp&bsol;Individ_6&bsol;ind2>

Seha.lsm:

Seha 1

Seha 3

Sveta 1

Sveta 2

Sveta 3

I

like

you!!!

Svitlana 3

Svitlana 2

Svitlana 1

Seha 9