Siemka! Mam problem z programem w c++, otóż zadanie polegało na tym, aby program wszystko posortował od największego pola do najmniejszego i ładnie to wyświetlił w takiej kolejności: długość x szerokość = pole
Problem mój polega na tym, że program sortuje samo pole, i wygląda to komicznie bo wychodzi np.
7x5=5
5x1=35
3x2=81
#include <iostream>
using namespace std;
struct prostokat
{
float dlugosc;
float szerokosc;
float pole;
};
void wpisuje(prostokat tab[], int ile_elem)
{
for (int i=0;i<ile_elem;i++)
{
cout<<"Wpisz "<<i+1<<" dlugosc: ";
cin>>tab[i].dlugosc;
cout<<"Wpisz "<<i+1<<" szerokosc: ";
cin>>tab[i].szerokosc;
}
}
void pole(prostokat tab[], int ile_elem)
{
for (int i=0;i<ile_elem;i++)
{
tab[i].pole=tab[i].dlugosc*tab[i].szerokosc;
}
}
void sort(prostokat tab[], int ile_elem)
{
int swap;
for(int i = 0; i<ile_elem-1; i++){
for(int j=0; j<ile_elem-1; j++){
if(tab[j].pole > tab[j+1].pole){
swap = tab[j].pole;
tab[j].pole = tab[j+1].pole;
tab[j+1].pole = swap;
}
}
}
}
void sprawdz(prostokat tab[], int ile_elem)
{
int x=0;
for (int i=0;i<ile_elem;i++)
{
if (tab[i].pole!=tab[i+1].pole)
{
x--;
}
else
{
x++;
}
}
if (x>0)
{
cout<<"Sa przynajmniej 2 identyczne pola"<<endl;
}
else if (x<0)
{
cout<<"Nie ma takich samych pol"<<endl;
}
}
void wypisz(prostokat tab[], int ile_elem)
{
for (int i=0;i<ile_elem;i++)
{
cout<<"Pole "<<i+1<<" prostokata: "<<tab[i].dlugosc<<" x "<<tab[i].szerokosc<<" = "<<tab[i].pole<<endl;
}
}
int main()
{
int ile_elem=3;
prostokat tab[10];
wpisuje(tab, ile_elem);
pole(tab, ile_elem);
sprawdz(tab, ile_elem);
wypisz(tab, ile_elem);
cout<<endl;
sort(tab, ile_elem);
wypisz(tab, ile_elem);
return 0;
}