O
o1ps
Есть небольшая программа
Будьте добры, подскажите как в ней организовать упорядочение по последнему столбцу дат методом пузырька.
Не получается. Будьте добры помочь исправить создавшиеся ошибки. Буду очень благодарен.
Код:
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
class class2;
class class1
{int a;
friend void fun(class1&,class2&);
public:
class1(int A) : a(A) { };
};
class class2
{int a;
friend void fun(class1&,class2&);
public:
class2(int A) : a(A) { }; };
void fun(class1& M1,class2& M2)
{if (M1.a == M2.a) cout << "equal\n";
else cout << "non equal\n"; }
class class3
{int x,y;
public:
void read(int& X, int& Y) const { X=x; Y=y; }
void write(int X, int Y) { x=X; y=Y; }
void display() const;
void e(void) const { ((class3*) this)->x++; }
};
void class3::display() const { cout << x << '\t' << y << endl; }
static union
{ int a;
};
struct Data {
char magazin[10], fio[20], year[10], in[5];
int count, ostatok, name, out;
time_t date;
float price;
static void Stopper() {getch();}
};
class Antey {
public:
float price;
int ostatok, out;
};
class Prodolit {
public:
float price;
int ostatok, out;
};
class Svetlana {
public:
float price;
int ostatok, out;
};
void Output(Data);
void main(void)
{
char *SrStK= "Srednyaya stoimost' knig v magazine ";
char avtor[20], zoomzoom[15];
float Ostatok=0, SrOstatok=0;
int n=0,q=0, w=0, e=0,i,k=0, Kolichestvo=0, S=50;
fstream inFile;
inFile.open("data.txt",ios::in);
fstream outFile("file.txt",ios::out);
if(!inFile.is_open())
{cerr << "Error\n";
abort(); }
Data* Dan=new Data[S];
Antey Ant[50];
Prodolit Prod[50];
Svetlana Svet[50];
cout <<"\tHello \n";
cout<<"Ves' spisok:" << endl;
cout.setf(cout.left);
cout.width(7);
cout << "Magazin";
cout.width(4);
cout << "Type";
cout.width(8);
cout << "Country";
cout.width(6);
cout << "Price";
cout.width(3);
cout << "In";;
cout.width(4);
cout << "Out";
cout.width(6);
cout << "Prim.";
cout.width(11);
cout << "St.postup.";
cout.width(9);
cout << "St.prod.";
// cout.width(7);
cout << "Date";
// cout.width(7);
cout << "Date" << endl<<endl;
////////////////////////////////////////////
while (inFile >> Dan[n].magazin>>Dan[n].fio>>
Dan[n].year>>Dan[n].name>>Dan[n].count>>Dan[n].price>>Dan[n].in>>Dan[n].date)
{ Dan[n].ostatok = Dan[n].name * Dan[n].price;
Dan[n].out = Dan[n].name * Dan[n].price;
Output(Dan[n]);
n++;
}
inFile.close();
cout<<endl<<endl;
Data::Stopper();
/////////////////////////////////////////////
cout<<"Vvedite type PEVM"<<endl;
cin >> avtor;
outFile<<"\t"<<avtor<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan[i].fio, avtor) == 0)
{Output(Dan[i]);
k+=1;
outFile<<Dan[i].magazin<<" "<<Dan[i].fio<<" "<<Dan[i].name<<" "<<Dan[i].price<<" "<<Dan[i].ostatok<<" "<<Dan[i].out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
cout<<"Vvedite magazin"<<endl;
cin >> zoomzoom;
outFile<<"\t"<<zoomzoom<<"\n";
for (i=0; i<n; i++)
{if(strcmp (Dan[i].magazin, zoomzoom) == 0)
{Output(Dan[i]);
k+=1;
outFile<<Dan[i].magazin<<" "<<Dan[i].fio<<" "<<Dan[i].name<<" "<<Dan[i].price<<" "<<Dan[i].ostatok<<" "<<Dan[i].out<<"\n";}
}
if (k==0)
{cout << "Po vashemu zaprosy nichego ne najdeno";
outFile<<"Po vashemu zaprosy nichego ne najdeno\n";}
cout<<endl<<endl;
for (i=0; i<n; i++)
{ if (strcmp (Dan[i].magazin, "Antey")==0)
{ q+=1;
Ant[q].price = Dan[i].price;
Ant[q].ostatok = Dan[i].ostatok;}
else
{ if (strcmp (Dan[i].magazin, "Prodolit")==0)
{ w+=1;
Prod[w].price = Dan[i].price;
Prod[w].ostatok = Dan[i].ostatok;}
else
{ e+=1;
Svet[e].price = Dan[i].price;
Svet[e].ostatok = Dan[i].ostatok;}}
}
Data::Stopper();
class1 mc1 = 100, mc3 = 200;
class2 mc2 = 100;
fun(mc1,mc2);
fun(mc3,mc2);
int x,y;
class3 A;
A.write(25,36);
A.display();
A.e();
A.read(x,y);
cout << x << '\t' << y << endl;
const class3 B=A;
cout <<"\n\t Spasibo za vnimanie!!! ";
}
void Output (Data d)
{
struct tm *t;
cout.width(7);
cout << d.magazin;
cout.width(4);
cout << d.fio;
cout.width(8);
cout << d.year;
cout.width(6);
cout << d.name;
cout.width(4);
cout << d.count;
cout.width(5);
cout << d.price;
cout.width(5);
cout << d.in;
cout.width(10);
cout << d.out;
t=gmtime(&d.date);
cout << t->tm_mday << "." << (t->tm_mon+1) << "." << (1900+t->tm_year);
cout.width(10);
cout<<(d.ostatok);
// t=gmtime(&d.date);
cout << t->tm_mday << "." << (t->tm_mon+1) << "." << (1900+t->tm_year) << endl;
}
Будьте добры, подскажите как в ней организовать упорядочение по последнему столбцу дат методом пузырька.
Код:
void my_class::sort(){ //Сортировка структуры по возрастания
int i, flag; //по полю "обеспеченность"
char buf2[100]; //используется метод пузырька
a1: flag=0;
for(i=1; i<n;i++){
if (k[i]>k[i+1]){
flag=1;
buf.buf1=list[i].date; //Обмен поля <Code>
list[i].date=list[i+1].date;
list[i+1].date=buf.buf1;
Не получается. Будьте добры помочь исправить создавшиеся ошибки. Буду очень благодарен.