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

Rozdział 53 - Zadanie domowe.

Ostatnio zmodyfikowano 2019-03-11 08:54
Autor Wiadomość
lukaszse
Temat założony przez niniejszego użytkownika
Rozdział 53 - Zadanie domowe.
» 2019-03-10 23:43:04
Chciałem zapytać czy to rozwiązanie jest poprawne, czy istnieje inne rozwiązanie? Wydaje mi się to zbyt trywialne.

C/C++
#include <iostream>


int add( int a, int b )
{
   
    if( b == 0 )
         return a;
   
    return add( a ^ b,( a & b ) << 1 );
}


int substract( int a, int b )
{
   
    if( b == 0 )
         return a;
   
    return add( a ^( ~b + 1 ),( a &( ~b + 1 ) ) << 1 );
}

int main()
{
    int a, b;
    std::cout << "Podaj dwie liczby:\n";
    std::cin >> a >> b;
    //std::cout << a << " + " << b << " = " << add( a, b ) << '\n';
    std::cout << a << " - " << b << " = " << substract( a, b ) << '\n';
}
P-174164
Rashmistrz
» 2019-03-11 02:03:15
Co prawda nie czytałem jeszcze zaktualizowanego kursu,
ładne rekurencyjne rozwiązanie uzyskałeś,
aczkolwiek ja bym spróbował to jeszcze rozwiązać iteracyjnie
i znaleźć dodatkowo sposób na parallel'izację
by zrobić jak najwięcej części operacji za jednym zamachem.

Wolałbym, żeby ktoś jeszcze się wypowiedział,
bo ja sam muszę nieco swoją wiedzę odświeżyć.
P-174165
pekfos
» 2019-03-11 08:54:29
Wydaje mi się to zbyt trywialne.
Bo to zadanie jest trywialne. Rozwiązanie można zapisać krócej
C/C++
int subtract( int a, int b )
{
    return add( a, add( ~b, 1 ) );
}
P-174166
« 1 »
  Strona 1 z 1