Zdravím,
nešel jsem na pivko, tak jsem ti teď udělal celý program i s tím výpisem. Stačí prostě a jistě v tom Bubble sortu na začátku porovnávat ty číselné hodnoty té dané struktury (tedy čísla, ne řetězce) a pak se prohodí již celé ty struktury.
#include <iostream>
using namespace std;
struct Porucha
{
string zacatek;
string konec;
string poznamka;
};
int casNaMinuty(string retezec) {
int h, m;
sscanf(retezec.c_str(), "%d:%d", &h, &m);
int minuty = (h * 60) + m;
return minuty;
}
void seraditDleCasu(Porucha * p, int velikostPole) {
bool seradit = true;
while (seradit) {
seradit = false;
for (int i = 0; i < (velikostPole - 1); i++) {
if ( casNaMinuty((*(p + i)).zacatek) > casNaMinuty((*(p + i + 1)).zacatek) ) {
seradit = true;
Porucha temp = (*(p + i));
(*(p + i)) = (*(p + i + 1));
(*(p + i + 1)) = temp;
}
}
}
return;
}
void vypsat(Porucha * p, int velikostPole) {
for (int i = 0; i < (velikostPole); i++) {
cout <<
"start: " << (*(p+i)).zacatek << ", konec: " << (*(p+i)).konec << ", pozn.: " << (*(p+i)).poznamka << endl;
}
}
int main(int argc, char *argv[]) {
Porucha struktury[4] = {
{"13:08", "13:55", "oprava 1"},
{"11:59", "14:59", "oprava 2"},
{"22:00", "23:00", "oprava 3"},
{"08:02", "09:20", "oprava 4"}
};
seraditDleCasu(struktury, 4);
vypsat(struktury, 4);
system("PAUSE");
return EXIT_SUCCESS;
}