Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

iloczyn ułamków, zadeklarowanie nwd

Ostatnio zmodyfikowano 2021-05-24 18:13
Autor Wiadomość
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:
C/C++
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



C/C++
#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;
}
P-178654
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ć

C/C++
e = a / nwd( a, d ) * c / nwd( b * c );
//e =  a / nwd_ef( a, d ) * c / nwd_ef( b, c )
f = b / nwd( b, c ) * d / nwd( a, d );
//f = b / nwd_ef( b, c ) * d / nwd_ef( a, d );

wcześniej jest
int e, f, nwd_ef;
 //<=- tutaj tego nwd_ef nie powinno być raczej powinno być nwd

dalej
C/C++
nwd_ef = nwd( e, f ); // nwd = nwd_ef( e, f )

cout << e / nwd_ef << endl; // e/nwd
cout << f / nwd_ef << endl; // f/nwd

w main() dopisz
iloczyn( licz_1, mian_1, licz_2, mian_2 );
P-178655
Marseille
Temat założony przez niniejszego użytkownika
» 2021-05-24 13:00:27
Teraz mam błąd z tym fragmentem
C/C++
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?
P-178656
Marseille
Temat założony przez niniejszego użytkownika
» 2021-05-24 13:01:13
P-178657
nanoant20
» 2021-05-24 13:41:43
C/C++
#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;
}
P-178658
Marseille
Temat założony przez niniejszego użytkownika
» 2021-05-24 13:45:04
Wielkie dzięki, ratujesz mi życie <3
P-178659
pekfos
» 2021-05-24 16:48:46
C/C++
int e { 0 }, f { 0 }, nwd { 0 };
Po co tak utrudniać sobie pisanie kodu?
P-178660
nanoant20
» 2021-05-24 17:33:11
@pekfos jak zwykle słuszna uwaga, trzeba było od razu napisać

C/C++
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 );
P-178661
« 1 » 2
  Strona 1 z 2 Następna strona