witam mam pewien problem z posortowanie tablicy mianowicie (sortowanie jest dopiero na początku) wpisując
1
2
A 2 1
B 1 1
powinienem dostać
B 1 1
A 2 1
ale mam
A 2 1
B 1 1
problem jest w funkcji exchangeValue ale nie wiem jaki?
#include <iostream>
#include <string>
#include <cstdio>
struct points {
char * letter = new char;
int *A = new int;
int *B = new int;
~points() {
delete letter;
delete A;
delete B;
}
};
void comparison (points tabPoints[] , int size , points tabSecondary[]);
void exchangeValue (points tabMin[] , points tabPoints[] , int i , int j );
int main()
{
int step = 0;
int howManyPoints = 0;
int index = 0;
std::cin >> step >> howManyPoints;
int sizeTab = howManyPoints;
points * tabPoints = new points [howManyPoints];
points * tabSecondary = new points ;
points * tabSort = new points [howManyPoints];
while (step != 0) {
while (howManyPoints != 0) {
std::cin >> *tabPoints[index].letter >> *tabPoints[index].A >> *tabPoints[index].B;
++index;
--howManyPoints;
}
--step;
}
comparison (tabPoints, sizeTab, tabSecondary);
delete [] tabPoints;
return 0;
}
void comparison (points tabPoints[] , int size , points tabSecondary[]) {
for (int i = 0 ; i < size ; i++) {
points tabMin;
tabMin.letter = tabPoints[i].letter;
tabMin.A = tabPoints[i].A;
tabMin.B = tabPoints[i].B;
for (int j = i+1; j < size ; j++) {
if (*tabMin.A > *tabPoints[j].A) {
exchangeValue( &tabMin , tabPoints , i , j );
}
}
}
}
void exchangeValue (points tabMin[] , points tabPoints[] , int i , int j ) {
points tabTamp;
tabTamp.letter = tabMin->letter;
tabTamp.A = tabMin->A ;
tabTamp.B = tabMin->B ;
tabMin->letter = tabPoints[j].letter;
tabMin->A = tabPoints[j].A ;
tabMin->B = tabPoints[j].B ;
tabPoints[i].letter = tabTamp.letter;
tabPoints[i].A = tabTamp.A ;
tabPoints[i].B = tabTamp.B ;
for (int k = 0 ; k < 2 ; ++k) {
std::cout << *tabPoints[k].letter << " " << *tabPoints[k].A << " " << *tabPoints[k].B << std::endl;
}
}