Marseille Temat założony przez niniejszego użytkownika |
iloczyn ułamków, zadeklarowanie nwd » 2021-05-24 10:20:58 Dzień dobry. Mam problem z napisaniem działającego kodu źródłowego, który ma obliczać iloczyn ułamków, a dokładniej ze zadeklarowaniem nwd w tym miejscu: void iloczyn( int a, int b, int c, int d ) { int e, f, nwd_ef; e = a / nwd( a, d ) * c / nwd( b * c ); f = b / nwd( b, c ) * d / nwd( a, d ); nwd_ef = nwd( e, f ); cout << e / nwd_ef << endl; cout << f / nwd_ef << endl; }
Nie mam pojęcia co robię źle i co muszę dalej zrobić aby wszystko działało, a poniżej wklejam pełny kod źródłowy #include<iostream>
using namespace std;
int nwd_ef( int a, int b ) { while( a != 0 && b != 0 ) if( a > b ) a = a % b; else b = b % a; if( a != 0 ) return a; else return b; }
void iloczyn( int a, int b, int c, int d ) { int e, f, nwd_ef; e = a / nwd( a, d ) * c / nwd( b * c ); f = b / nwd( b, c ) * d / nwd( a, d ); nwd_ef = nwd( e, f ); cout << e / nwd_ef << endl; cout << f / nwd_ef << endl; }
int main() { int licz_1, mian_1, licz_2, mian_2; cout << "Liczba 1 - licznik: "; cin >> licz_1; cout << "Liczba 1 - mianownik: "; cin >> mian_1; cout << "Liczba 2 - licznik: "; cin >> licz_2; cout << "Liczba 2 - mianownik: "; cin >> mian_2; return 0; }
|
|
nanoant20 |
» 2021-05-24 12:06:37 brak takiej funkcji nwd( int, int ) za to w Twoim kodzie jest funkcja int nwd_ef( int a, int b ) //edit i z niej trzeba skorzystać e = a / nwd( a, d ) * c / nwd( b * c ); f = b / nwd( b, c ) * d / nwd( a, d );
wcześniej jest int e, f, nwd_ef; //<=- tutaj tego nwd_ef nie powinno być raczej powinno być nwd dalej nwd_ef = nwd( e, f ); cout << e / nwd_ef << endl; cout << f / nwd_ef << endl; w main() dopisz iloczyn( licz_1, mian_1, licz_2, mian_2 ); |
|
Marseille Temat założony przez niniejszego użytkownika |
» 2021-05-24 13:00:27 Teraz mam błąd z tym fragmentem nwd = nwd_ef( e, f );
cout << e / nwd << endl; cout << f / nwd << endl;
a dokładniej chodzi o to, że main.cpp:31:22: error: assignment of function ‘int nwd(int, int)’ nwd = nwd_ef( e,f); ^ main.cpp:31:22: error: cannot convert ‘int’ to ‘int(int, int)’ in assignment main.cpp:33:14: error: invalid operands of types ‘int’ and ‘int(int, int)’ to binary ‘operator/’ cout << e/nwd << endl; ~^~~~ main.cpp:34:14: error: invalid operands of types ‘int’ and ‘int(int, int)’ to binary ‘operator/’ cout << f/nwd << endl; ~^~~~ Co powinienem zrobić z tym fragmentem, aby działało to tak jak powinno? |
|
Marseille Temat założony przez niniejszego użytkownika |
» 2021-05-24 13:01:13 |
|
nanoant20 |
» 2021-05-24 13:41:43 #include <iostream> #include <cmath>
using namespace std;
int nwd_ef( int a, int b ) { while( a != 0 && b != 0 ) if( a > b ) a = a % b; else b = b % a; if( a != 0 ) return a; else return b; }
void iloczyn( int a, int b, int c, int d ) { int e { 0 }, f { 0 }, nwd { 0 }; e = a / nwd_ef( a, d ) * c / nwd_ef( b, c ); f = b / nwd_ef( b, c ) * d / nwd_ef( a, d ); nwd = nwd_ef( e, f ); cout << e / nwd << endl; cout << f / nwd << endl; }
int main() { int licz_1 { 0 }, mian_1 { 0 }, licz_2 { 0 }, mian_2 { 0 }; cout << "Liczba 1 - licznik: "; cin >> licz_1; cout << "Liczba 1 - mianownik: "; cin >> mian_1; cout << "Liczba 2 - licznik: "; cin >> licz_2; cout << "Liczba 2 - mianownik: "; cin >> mian_2; iloczyn( licz_1, mian_1, licz_2, mian_2 ); getchar(); return 0; }
|
|
Marseille Temat założony przez niniejszego użytkownika |
» 2021-05-24 13:45:04 Wielkie dzięki, ratujesz mi życie <3 |
|
pekfos |
» 2021-05-24 16:48:46 int e { 0 }, f { 0 }, nwd { 0 };
Po co tak utrudniać sobie pisanie kodu? |
|
nanoant20 |
» 2021-05-24 17:33:11 @pekfos jak zwykle słuszna uwaga, trzeba było od razu napisać int e = a / nwd_ef( a, d ) * c / nwd_ef( b, c ); int f = b / nwd_ef( b, c ) * d / nwd_ef( a, d ); int nwd = nwd_ef( e, f );
|
|
« 1 » 2 |