Witajcie programiści !
Piszę bo mam problem do opanowania, a dokładnie program do zrobienia w języku C++.
Zadanie znajduje się pod linkiem: http://imageshack.us/f/855/heapsort.jpg/
A tutaj jest mój pomysł na to wykonanie tylko wiem, że są tutaj błędy, pomogłaby mi jakaś osoba. Program nie jest trudny dla zorientowanych w programowaniu obiektowym. Jeśli macie jakiejś pytania piszcie.
#include "stdafx.h"
#include <iostream.h>
#include <conio.h>
using namespace std;
void sortuj(char);
struct punkt
{
float x;
float y;
};
int ile,xy;
char ch;
punkt *tab;
int main(int argc,char *argv[])
{
cin >>x
cout<<"podaj ile wsporzednych punktow chcesz wprowadzic ";
cin>>ile;
tab=new struct punkt[ile];
for(int i=0;i<ile;i++)
{
cout<<"podaj wspolrzedna x "<<i+1<<" punktu ";
cin>>tab[i].x;
cout<<"podaj wspolrzedna y "<<i+1<<" punktu ";
cin>>tab[i].y;
}
system("cls");
cout<<"tablica wspolrzednych przed sortowaniem"<<endl;
for(int i=0;i<ile;i++)
cout<<"punkt "<<i+1<<" wspolrz. x="<<tab[i].x<<" wspolrz. y="<<tab[i].y<<endl;
cout<<"jak chcesz sortowac wg wspolrz. x wpisz x, gdy y wpisz y ";
cin>>ch;
sortuj(ch);
cout<<"tablica wspolrzednych po sortowaniu wg wspolrz. "<<ch<<endl;
for(int i=0;i<ile;i++)
cout<<"punkt "<<i+1<<" wspolrz. x="<<tab[i].x<<" wspolrz. y="<<tab[i].y<<endl;
getch();
delete [] tab;
return 0;
}
void sortuj(char ch)
{
for(int i=1;i<ile;i++)
for(int j=ile-1;j>=i;j--)
{
if(ch=='x') if(tab[j-1].x<tab[j].x)
{
float px=tab[j-1].x;
float py=tab[j-1].y;
tab[j-1].x=tab[j].x;
tab[j-1].y=tab[j].y;
tab[j].x=px;
tab[j].y=py;
}
if(ch=='y') if(tab[j-1].y<tab[j].y)
{
float px=tab[j-1].x;
float py=tab[j-1].y;
tab[j-1].x=tab[j].x;
tab[j-1].y=tab[j].y;
tab[j].x=px;
tab[j].y=py;
}
}
}