PDA

View Full Version : задача



ritobis
05-07-2011, 12:41
Здравейте пичове.Искам да ви питам за една задача на с++.Значи имаме библиотека.Въвеждаме брои книги за въвеждане.След това въвеждаме информацията за всяка една книга.Име на автор,име на книга,номер и цена.След това да изведе книга на определен автор(който ще въведем от клавиетурата) и освен това да сортира книгите по цена.Значи аз другото съм направил ама само на сортирането се затруднявам.Ако може някой да ми помогне.Ето и програмата:
И да не забравя, програмата трябва да е с ФУНКЦИЯ,която да извикаме накрая.


#include <iostream>
#include <cstring>
using namespace std;
struct knigi
{
char name_autor[58];
char name_book[58];
char number[58];
double cena;
};
void input(int m)
{

knigi a[56];
for(int i=0;i<m;i++)
{
cout<<"vuvedi ime na avtora"<<" ";
cin>>a[i].name_autor;
cout<<"vuvedi ime na knigata"<<" ";
cin>>a[i].name_book;
cout<<"vuvedi nomer"<<" ";
cin>>a[i].number;
cout<<"vuvedi cena"<<" ";
cin>>a[i].cena;
}
}
void output(int m)
{
knigi a[56];
for(int j=0;j<m;j++)
{
cout<<a[j].name_autor<<" ";
cout<<a[j].name_book<<" ";
cout<<a[j].number<<" ";
cout<<a[j].cena<<" ";
}
}
void tursene(int m)
{
knigi a[56];
char avtor[45];
cin.get();
cin.getline(avtor,45);
{
for(int h=0;h<m;h++)
{
if(strcmp(avtor,a[h].name_autor)==0)
{
cout<<a[h].name_autor<<endl;
cout<<a[h].name_book<<endl;
cout<<a[h].number<<endl;
cout<<a[h].cena<<endl;
}
}
}
}
int main()
{
int m;
cin>>m;
input(m);
output(m);
tursene(m);
return 0;
}

Foreverbg
05-07-2011, 14:14
int cmp(knigi t1,knigi t2) {
if(t1.cena<t2.cena) return 1;
return 0;
}

И в главната функция викаш cmp.
sort(knigi,knigi+m,cmp);
И си направи m и knigi[] глобални.

ritobis
05-07-2011, 14:57
В клас някак ей така го бяхме направили, ама не знам къде бъркам и ми излизат 2 грешки:|no match for 'operator=' in 'a[g]=std::swap'| и другата |no match for 'operator=' in 'a[(g+1)]=std::swap'|
#include <iostream>
#include <cstring>
using namespace std;
struct knigi
{
char name_autor[58];
char name_book[58];
char number[58];
double cena;
};
void input(int m)
{

knigi a[56];
for(int i=0;i<m;i++)
{
cout<<"vuvedi ime na avtora"<<" ";
cin>>a[i].name_autor;
cout<<"vuvedi ime na knigata"<<" ";
cin>>a[i].name_book;
cout<<"vuvedi nomer"<<" ";
cin>>a[i].number;
cout<<"vuvedi cena"<<" ";
cin>>a[i].cena;
}
}
void output(int m)
{
knigi a[56];
for(int j=0;j<m;j++)
{
cout<<a[j].name_autor<<" ";
cout<<a[j].name_book<<" ";
cout<<a[j].number<<" ";
cout<<a[j].cena<<" ";
}
}
void tursene(int m)
{
knigi a[56];
char avtor[45];
cin.get();
cin.getline(avtor,45);
{
for(int h=0;h<m;h++)
{
if(strcmp(avtor,a[h].name_autor)==0)
{
cout<<a[h].name_autor<<endl;
cout<<a[h].name_book<<endl;
cout<<a[h].number<<endl;
cout<<a[h].cena<<endl;
}
}
}
}
void sort(int m)
{
knigi a[56];
for(int h=0;h<m;h++)
{
for(int g=0;g<m;g++)
{
if(a[g].cena>a[g+1].cena)
{
a[g]=swap;
a[g]=a[g+1];
a[g+1]=swap;
}}

}
}
int main()
{
int m;
cin>>m;
input(m);
output(m);
sort(m);
return 0;
}

lmao
05-07-2011, 16:24
double swap;
swap = a[g];
a[g] = a[g+1];
a[g+1] = swap;