• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mnożenie trzech liczb całkowitych bez operatora "*"

Object Storage Arubacloud
0 głosów
314 wizyt
pytanie zadane 26 kwietnia 2020 w Python przez Hubertius Bywalec (2,970 p.)
edycja 26 kwietnia 2020 przez Hubertius

Hej :)

Mam do rozwiązania takie oto zadanie:

Użytkownik podaje trzy liczby całkowite. Napisz funkcję, która pomnoży trzy liczby całkowite bez operatora „*”. Pamiętaj o zasadach mnożenia

Napotkałem pewien problem dotyczący właśnie liczb ujemnych. Ale na początku mój kod:

def multiplication(a,b,c):
    check_if_minus = 0
    if( a < 0):
        check_if_minus = check_if_minus + 1
        a = ~a + 1
    elif( b < 0 ):
        check_if_minus = check_if_minus + 1
        b = ~b + 1
    elif( c < 0 ):
        check_if_minus = check_if_minus + 1
        c = ~c + 1
    elif( a == 0 or b == 0 or c == 0 ):
        return 0
    wynik = 0
    i = 0
    while( i != b):
        wynik = wynik + a
        i = i + 1
    i = 1
    new = wynik
    while( i != c ):
        wynik = wynik + new
        i = i + 1
    if( check_if_minus == 1 or check_if_minus == 3 ):
         wynik = ~wynik + 1
         return wynik
    else:
        return wynik
print("Podaj trzy liczby do swoich operacji:\n")
a = int(input())
b = int(input())
c = int(input())
wynik = multiplication(a,b,c)
print(wynik)

Mój problem dotyczy tego, że nie wiem czemu, ale moje wykorzystanie operatora negacji ~nie chce działać. Nie wiem jak jest w Python-ie (moje doświadczenie w pisaniu programów z niego jeżeli chodzi o dni można liczyć jako... dzisiaj xd), ale wiem, że choćby w języku C działania na operatorach ~ powinny się udać.

Teraz mam zagwozdkę jak sobie z tym poradzić. Pomożecie?   :/

1
komentarz 26 kwietnia 2020 przez adrian17 Ekspert (344,860 p.)
niezbyt rozumiem... zadanie mówi żeby nie używać mnożenia, ale nie widzę instrukcji żeby nie używać "-".

(swoją drogą, w Pythonie nie trzeba używać nawiasów w warunkach. Możesz też używać "+=")
komentarz 26 kwietnia 2020 przez Hubertius Bywalec (2,970 p.)
Dziękuję za tą radę z operatorami przypisania.
Udało mi się dokończyć zadanie. Dla ujemnych liczb zrobiłem ich przeciwieństwo z wykorzystaniem "-", tak jak wyżej wspomniałeś.  ^^

1 odpowiedź

+2 głosów
odpowiedź 26 kwietnia 2020 przez DawidK Nałogowiec (37,910 p.)

Możesz zrobić również w ten sposób - zamienić elif na if (żeby przechodziło, do następnych warunków), dodawania wykonać na liczbach bezwzględnych i później sprawdzić czy masz nieparzystą ilość minusów (1 lub 3) i wtedy zwrócić ujemny wynik.

def multiplication(a,b,c):
    check_if_minus = 0
    if( a < 0):
        check_if_minus = check_if_minus + 1
    if( b < 0 ):
        check_if_minus = check_if_minus + 1
    if( c < 0 ):
        check_if_minus = check_if_minus + 1
    if( a == 0 or b == 0 or c == 0 ):
        return 0
    wynik = 0
    i = 0
    while( i != abs(b)):
        wynik = wynik + abs(a)
        i = i + 1
    i = 1
    new = wynik
    while( i != abs(c)):
        wynik = wynik + new
        i = i + 1
    if( check_if_minus %2 == 1):
         wynik = -wynik
         return wynik
    else:
        return wynik
print("Podaj trzy liczby do swoich operacji:\n")
a = int(input())
b = int(input())
c = int(input())
wynik = multiplication(a,b,c)
print(wynik)

 

Podobne pytania

+1 głos
1 odpowiedź 561 wizyt
pytanie zadane 19 czerwca 2021 w C i C++ przez wndtcw Nowicjusz (130 p.)
+1 głos
2 odpowiedzi 334 wizyt
pytanie zadane 14 czerwca 2021 w C# przez everstudybee Użytkownik (610 p.)
0 głosów
1 odpowiedź 405 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez kacper1445 Gaduła (4,880 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...