Dobrý den, mám za úkol naprogramovat funkci, která setřídí zlomky, v té funkci void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek)), je ukazatel na funkci S, která bere dva parametry Struct Zlomek a struct Zlomek. Akorát když ji potom během třídění zavolám S(D[i].citatel,D[j].jmenovatel) tak mi to vyhodí chybu, že argument typu unsigned int je nekompatibilní s typem struct Zlomek. Mohli byste mě takříkajíc trošku "postričit" vpřed abych věděl co mám špatně a jak to opravit předem děkuji.
#include <stdio.h>
#include "Uloha3"
#include<conio.h>
#include<stdlib.h>
void Vypsat(struct Zlomek Z[], int n);
void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek));
char Vetsi(struct Zlomek z1, struct Zlomek z2);
char Mensi(struct Zlomek z1, struct Zlomek z2);
void main(void)
{
Vypsat(Z, Pocet);
printf("\n");
Tridit(Z, Pocet, Vetsi);
Vypsat(Z, Pocet);
//Tridit(Z, Pocet, Mensi);
//Vypsat(Z, Pocet);
getchar();
getchar();
}
void Tridit(struct Zlomek D[], int n, char(*S)(struct Zlomek, struct Zlomek))
{
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - i - 1; j++)
{
if (S(D[i].citatel,D[j].jmenovatel)==1)
{
struct Zlomek t = D[j + 1];
D[j + 1] = D[j];
D[j] = t;
}
}
}
}
char Vetsi(struct Zlomek z1, struct Zlomek z2)
{
if (z1.citatel*z2.jmenovatel > z2.citatel*z1.jmenovatel)
return 1;
else
return 0;
}
char Mensi(struct Zlomek x1, struct Zlomek x2)
{
if (x1.citatel*x2.jmenovatel < x2.citatel*x1.jmenovatel)
return 1;
else
return 0;
}
void Vypsat(struct Zlomek Z[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%d/%d ", Z[i]);
}
}