Błąd przy konwertowaniu na liczbę całkowitą

0

int NWD(int a, int b)
{
int pom;
while(b!=0)
{
pom=b;
b=a%b;
a=pom;
}
return a;
}

struct wymierna
{
int mian;
int licz;
}a, b, c;

int Skroc(int a,int b)
{
int d;
d=NWD(a,b);
a=a/d;
b=b/d;
}

wymierna mnoz()
{
wymierna a, b, c;
int nwd1, nwd2;

cin>>a.licz;
cin>>a.mian;
cin>>b.licz;
cin>>b.mian;
a=Skroc(a);
b=Skroc(b);
nwd1=NWD(a.licz, b.mian);
nwd2=NWD(b.licz, a.mian);
c.licz=(a.licz/nwd1)*(b.licz);
c.mian=(a.mian/nwd2)*(b.mian/nwd1);
cout<<c.licz<<endl<<c.mian;
return 0;

}

int main()
{
mnoz();
}
Dzień dobry, program zwraca błąd
main.cpp:210:13: error: cannot convert ‘wymierna’ to ‘int’
210 | a=Skroc(a);
Staram się ale nie wiem o co chodzi:( (program ma mnożyć i skracać dwa ułamki). Bardzo dziękuję za pomoc;)!!

1

Argumentami funkcji Skroc są dwie liczby o typie int.
Natomiast w/w funkcja wywoływana jest ( linia 210 ) z jednym argumentem o typie 'wymierna:'.
Typy i liczba argumentów funkcji musi się zgadzać !

Generalnie należy się skupić na tej funkcji Skroc bo jest błędnie zaimplementowana.
Aby się to kupy trzymało to definicja powinna wyglądać np. tak:

wymierna Skroc(wymierna liczba) {
  // implementacja
  

}
0

Jak wyżej, dodam jeszcze, że, mnoz ma zwracać wymierną, a nie zero, (int); ogólnie, ten program wygląda chaotycznie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1