здравстуйте, такая проблема: есть прога, в ней нужно написать сортировку пузырьком, пол дня с другом сидели так и не придумали ничего. написали че то, но не работает. принцып действий ясен, а как для списоков ее реализовать не понятно. помогите кто может пожалуйста
c файл
Код:
#include <iostream.h>
#include <fstream>
#include <stdio.h>
#include <conio.h>
kolect *prev;
kolect *tmp;
kolect *Start=NULL;
void Addnachalo()
{
tmp=new kolect();
cout<<"Vvedite name: ";
cin>>tmp->name;
cout<<"Vvedite vozrast: ";
cin>>tmp->vozrast;
cout<<"Vvedite zarplatu: ";
cin>>tmp->zarplata;
cout<<"Vvedite premiy: ";
cin>>tmp->premya;
tmp->next=NULL;
if (Start==NULL) { Start=tmp; }
else
{ tmp->next=Start;
Start=tmp; }}
void Addkonec()
{
tmp=new kolect();
cout<<"Vvedite name: ";
cin>>tmp->name;
cout<<"Vvedite vozrast: ";
cin>>tmp->vozrast;
cout<<"Vvedite zarplatu: ";
cin>>tmp->zarplata;
cout<<"Vvedite premiy: ";
cin>>tmp->premya;
tmp->next=NULL;
if (Start==NULL)
{ Start=tmp; }
else
{ kolect *k=Start;
while (k->next!=NULL)
k=k->next;
k->next=tmp; }}
void Vuvod(kolect *Start)
{
tmp=Start;
while (tmp!=NULL)
{
cout<<"F.I.O. - "<<tmp->name<<endl;
cout<<"Vozrast - "<<tmp->vozrast<<endl;
cout<<"Zarplata - "<<tmp->zarplata<<" $"<<endl;
cout<<"Premya - "<<tmp->premya<<" $"<<endl;
tmp=tmp->next; }}
void Poisk()
{
int old;//int imya;
kolect *tmp=0;
tmp=Start;
cout<<endl<<"vozrast ? ";
cin>>old;
while(true)
{
if ( tmp->vozrast==old )
{
cout<<endl<<"rabotnik: "<<tmp->vozrast<<endl;
cout<<"est` takoi"<<endl;
}
if (tmp->next==Start||tmp->next==0)
{ break; }
tmp=tmp->next; }}
void Deleteone()
{
int z=0;
cout<<"kakoi vozrast ydalat'"<<endl;
cin>>z;
tmp=new kolect();
kolect *tmp=Start;
kolect *prev=Start;
while(tmp!=NULL)
{
if(tmp->vozrast==z)break;
else
tmp=tmp->next;
}
if(tmp==NULL)
cout<<"nety takih"<<endl;
if (tmp==Start)
{
Start=tmp->next;
delete(tmp); }
else
{ prev->next=tmp->next;
delete(tmp); }}
void Sort()
{
// int f=0;
int n;
while (tmp!=NULL)
{ for(int i=0; i<n; i++)
for(int j=0; j<n-1;j++)
{ cout<< endl;
if(tmp->vozrast > tmp->next->vozrast)
{
tmp=tmp->vozrast;
tmp->vozrast=tmp->next->vozrast;
tmp->next->vozrast=tmp;
} } } }
void InFile()
{
ofstream fout("file.txt");
tmp=Start;
while(tmp!=NULL)
{
fout<<tmp->name;
fout<<tmp->vozrast;
fout<<tmp->zarplata;
fout<<tmp->premya;
tmp=tmp->next; }
fout.close(); }
void OutFile()
{
ifstream fout("file.txt");
tmp=Start;
while(tmp!=NULL)
{
cout<<"F.I.O. - "<<tmp->name<<endl;
cout<<"Vozrast - "<<tmp->vozrast<<endl;
cout<<"Zarplata - "<<tmp->zarplata<<" $"<<endl;
cout<<"Premya - "<<tmp->premya<<" $"<<endl;
tmp=tmp->next; }
fout.close(); }
h файл
Код:
#include <iostream.h>
#include <fstream>
#include <stdio.h>
#include <conio.h>
struct kolect
{
char name [50];
int vozrast;
int zarplata;
int premya;
kolect *next;
} ;
#include "kolect.c"
extern void Addnachalo ();
extern void Addkonec ();
extern void Vuvod ();
extern void Poisk ();
extern void Deleteone ();
extern void Sort ();
extern void InFile ();
extern void OutFile ();
меню
Код:
#include "kolect.h"
#include <iostream.h>
#include <fstream>
#include <stdio.h>
#include <conio.h>
int main()
{
int vubor;
while(1)
{
cout<<endl<<"*** Sdelaite vubor ***" <<endl;
cout<<"1.Add v nachalo" <<endl;
cout<<"2.Add v konec" <<endl;
cout<<"3.Vuvod" <<endl;
cout<<"4.Poisk" <<endl;
cout<<"5.Delete 1 element" <<endl;
cout<<"6.Sortirovka" <<endl;
cout<<"7.In file" <<endl;
cout<<"8.From file" <<endl;
cout<<"0.Exit" <<endl;
cin>>vubor;
switch(vubor)
{
case 1: Addnachalo ();break;
case 2: Addkonec ();break;
case 3: Vuvod (Start);break;
case 4: Poisk ();break;
case 5: Deleteone ();break;
case 6: Sort ();break;
case 7: InFile ();break;
case 8: OutFile ();break;
case 0: return 0; break;
default: cout<<"Nepravelnyi vubor"<<endl; }}}