След промените стигнах до следния вид
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <iomanip.h>
struct student {
int number;
char name[30];
double mark;
student *pNext;
}
*pFirst=NULL,*p;
//------------------------------------
void DobStud(int number,char name[],double mark)
{student *p;
p = new student;
p->number=number;
strcpy(p->name,name);
p->mark=mark;
p->pNext = pFirst;
pFirst = p;
}
//----------------------------------
void ViewList(student *p)
{//student *p=pFirst;
if (p == NULL) cout<<"prazen spisyk\n";
else while (p != NULL)
{cout<<setw(4)<<p->number<<setw(30)<<p->name<<setw(8)<<p->mark<<endl;
p=p->pNext;
}
}
//-----------------------------------
student *SearchName(char name[30])
{student *p=pFirst;
if (p == NULL) cout<<"\n prazen spisyk";
else while (p != NULL)
{if (strcmp(p->name,name)==0) return p;
p=p->pNext;
}
return NULL;
}
//----------------------------------------
void DelName(char name[30])
{student *p=pFirst,*q=p;
if (p == NULL) cout<<"\n prazen spisyk";
else {while ((strcmp(p->name,name)!=0)&&(p!=NULL)){q=p; p=p->pNext; }
if (p==NULL) cout<<"\n ne e nameren student";
else{if(p==pFirst) pFirst=p->pNext;
else q->pNext=p->pNext;
delete p;
}
}
}
//------------------------------------------
void SelectSortName()
{student *p=pFirst,*q,*t,*r;char min[30]; t = new student;
while(p->pNext!=NULL)
{ strcpy(min,p->name);r=p; q=p->pNext;
//opredelqne na minimalniq element
while(q!=NULL)
{if(strcmp(q->name,min)<0){strcpy(min,q->name);r=q;}
q=q->pNext;
}
//razmestvane
t->number=r->number;strcpy(t->name,r->name);t->mark=r->mark;
r->number=p->number;strcpy(r->name,p->name);r->mark=p->mark;
p->number=t->number;strcpy(p->name,t->name);p->mark=t->mark;
p=p->pNext;
}
}
//-----------------------------------------
void main ()
{
int number;
char name[30];
double mark;
int KodOp;
do{
clrscr();
ViewList(pFirst);
cout<<"\t MENJU NA IZPYLNQVANITE OPERACII:\n";
cout<<"\t\t1 - dobavq danni za nov student\n";
cout<<"\t\t2 - tyrsene dannite za student\n";
cout<<"\t\t3 - iztrivane dannite za student\n";
cout<<"\t\t4 - sortirane dannite za student\n";
cout<<"\t Posochete operaciq ili 0 za prekratqvane:"; cin>>KodOp;
switch (KodOp)
{case 0 : break;
case 1 : cout<<"\n number =";cin>>number;
cout<<"\n name =";cin>>name;
cout<<"\n mark =";cin>>mark;
DobStud(number,name,mark);
break;
case 2 : cout << "\n name =";cin >> name;
p=SearchName(name);
cout<<endl;
cout<<setw(4)<<p->number<<setw(30)<<p->name;
cout<<setw(8)<<p->mark<<endl;
break;
case 3 : cout << "\n name =";cin >> name;
DelName(name);break;
case 4 : SelectSortName();
break;
default : cout<<"\n\t Zadali ste nesyshtestvuvashta operaciq.Natisnete ENTER.\n";
getch();
}
}while(KodOp!=0);
}
Програмата тръгва но дава някакви бъгове, който не ми харесват :(