rscream
11-12-2011, 21:34
Здравствуйте, очень нужна помощь, в блок-схемой. Программа уже написана. Суть программы: написать базу данных, и чтоб можно было её редактировать, сортировать и тд.
Проблема с блок схемой как рас в функции сортировке
Вот текст самой функции
DREVO *aadd_der (MUZZ s)
{
DREVO *pk;
VET *pv;
pk = new DREVO;
pv = new VET;
if (pk==NULL||pv==NULL)
{
cerr<<"error \n";
exit(1);
}
strcpy(pk->formf,s.formf);
pk->adk=NULL;
pk->adv=pv;
strcpy(pv->firm, s.firm);
strcpy(pv->countre, s.countre);
strcpy(pv->mat, s.mat);
pv->price=s.price;
pv->nomer=s.nomer;
pv->avv=NULL;
return pk;
}
//===============
DREVO * sozdrevo()
{
MUZZ z;
ifstream fr ("MUZZ.txt", ios::in);
if(!fr)
{
cerr<<"error \n";
exit(1);
}
DREVO *nk, *pk, *tk;
VET *pv, *rv;
int flag;
nk=NULL;
while(fr)
{
fr>>z;
if(strlen(z.firm)<=0)
break; // непонятно что должен делать break, после него нужно в начало while идти или куда?
if(nk==NULL)
{
nk=aadd_der(z);
pk=nk;
}
else
{
tk=nk;
flag=0;
while(tk)
if(strcmp(z.formf,tk->formf)==0)
{
flag=1;
break;
}
else
tk=tk->adk;
if(flag==0)
{
pk->adk=aadd_der(z);
pk=pk->adk;
}
else
{
pv=tk->adv;
while (pv->avv!=NULL)
pv=pv->avv;
rv=new VET;
if(rv==NULL)
{
cerr<<"error \n";
exit(1); }
strcpy(rv->firm,z.firm);
strcpy(rv->countre,z.countre);
strcpy(rv->mat,z.mat);
rv->price=z.price;
rv->nomer=z.nomer;
rv->avv=NULL;
pv->avv=rv;
}
}
}
fr.close();
return(nk);
}
//===================
void outdrevo (DREVO *nk)
{
VET *pv;
if(nk==NULL)
{
cout<<"Древо пустое \n";
return;
}
while(nk)
{
cout<<"spisok firm po forme \n: "<< nk->formf<<endl;
pv=nk->adv;
cout<<"_____________________________________________\n";
cout<<"| FIRMA | Countre | Material | -Price- | -Nomer- |\n";
cout<<"|____________________________________________|\n";
while(pv)
{
cout<<"|"<<setw(FIRM)<<pv->firm<<"|"<<
setw(COUNTRE)<<pv->countre<<"|"<<
setw(MAT)<<pv->mat<<"|"<<
setw(5)<<pv->nomer<<"|"<<
setw(5)<<pv->price<<"|\n";
pv=pv->avv;
}
cout<<"|___________________________________________________|\n";
cout<<"prodolgenie - enter \n";
cin.seekg(0L,ios::end);
cin.get();
nk=nk->adk;
} }
Всё что у меня пока получилось в прикреплённом .doc файле
В общем у меня проблема в понимании операторов while, if, когда они когда их много подряд начинаю путаться, что куда. С оператором break тож не всё понятно в итоге.
Буду рад любой подсказке.
Проблема с блок схемой как рас в функции сортировке
Вот текст самой функции
DREVO *aadd_der (MUZZ s)
{
DREVO *pk;
VET *pv;
pk = new DREVO;
pv = new VET;
if (pk==NULL||pv==NULL)
{
cerr<<"error \n";
exit(1);
}
strcpy(pk->formf,s.formf);
pk->adk=NULL;
pk->adv=pv;
strcpy(pv->firm, s.firm);
strcpy(pv->countre, s.countre);
strcpy(pv->mat, s.mat);
pv->price=s.price;
pv->nomer=s.nomer;
pv->avv=NULL;
return pk;
}
//===============
DREVO * sozdrevo()
{
MUZZ z;
ifstream fr ("MUZZ.txt", ios::in);
if(!fr)
{
cerr<<"error \n";
exit(1);
}
DREVO *nk, *pk, *tk;
VET *pv, *rv;
int flag;
nk=NULL;
while(fr)
{
fr>>z;
if(strlen(z.firm)<=0)
break; // непонятно что должен делать break, после него нужно в начало while идти или куда?
if(nk==NULL)
{
nk=aadd_der(z);
pk=nk;
}
else
{
tk=nk;
flag=0;
while(tk)
if(strcmp(z.formf,tk->formf)==0)
{
flag=1;
break;
}
else
tk=tk->adk;
if(flag==0)
{
pk->adk=aadd_der(z);
pk=pk->adk;
}
else
{
pv=tk->adv;
while (pv->avv!=NULL)
pv=pv->avv;
rv=new VET;
if(rv==NULL)
{
cerr<<"error \n";
exit(1); }
strcpy(rv->firm,z.firm);
strcpy(rv->countre,z.countre);
strcpy(rv->mat,z.mat);
rv->price=z.price;
rv->nomer=z.nomer;
rv->avv=NULL;
pv->avv=rv;
}
}
}
fr.close();
return(nk);
}
//===================
void outdrevo (DREVO *nk)
{
VET *pv;
if(nk==NULL)
{
cout<<"Древо пустое \n";
return;
}
while(nk)
{
cout<<"spisok firm po forme \n: "<< nk->formf<<endl;
pv=nk->adv;
cout<<"_____________________________________________\n";
cout<<"| FIRMA | Countre | Material | -Price- | -Nomer- |\n";
cout<<"|____________________________________________|\n";
while(pv)
{
cout<<"|"<<setw(FIRM)<<pv->firm<<"|"<<
setw(COUNTRE)<<pv->countre<<"|"<<
setw(MAT)<<pv->mat<<"|"<<
setw(5)<<pv->nomer<<"|"<<
setw(5)<<pv->price<<"|\n";
pv=pv->avv;
}
cout<<"|___________________________________________________|\n";
cout<<"prodolgenie - enter \n";
cin.seekg(0L,ios::end);
cin.get();
nk=nk->adk;
} }
Всё что у меня пока получилось в прикреплённом .doc файле
В общем у меня проблема в понимании операторов while, if, когда они когда их много подряд начинаю путаться, что куда. С оператором break тож не всё понятно в итоге.
Буду рад любой подсказке.