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

NWD spoj nieprawidlowy algorytm

Aruba Cloud - Virtual Private Server VPS
0 głosów
159 wizyt
pytanie zadane 21 marca 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
edycja 21 marca 2017 przez chucksqll

Witam. Spoj  wyświetla błędna odpowiedź, ja natomiast nie widzę błędu w moim rozumowaniu(chodzi o algorytm bo jak wstawiłem inny to zaakceptował). Jest to na podstawie algorytmu Euklides'a.Jedyne co przychodzi mi do głowy to kwestia gdy jakaś liczba jest równa 0, z góry dzięki za pomoc.


 int nwd(int a, int b)
 {
  do
  {                if((a==0)||(b!=0))
                a=b;
                else if((a!=0)||(b=0))
                    b=a;
      else if(a>b)
      a=a-b;
      else if(a<b)
        b=b-a;
 
  }while(a!=b);
 }

 
                 

1 odpowiedź

+1 głos
odpowiedź 25 marca 2017 przez BlackMoon Obywatel (1,730 p.)

1) Jeżeli używasz funkcji jakiegoś typu (np. int, float) to twoja funkcja musi zwracać jakąś wartość tego typu. Brakuje tu więc słowa kluczowego "return".
2) Zauważ, że gdy program zaczyna analizować twój pierwszy warunek if((a==0)||(b!0)) i gdy go spełni to pomija wszystkie pozostałe warunki, gdyż użyłeś przed nimi else. Program więc przypisuje wartość b do a (czyli obecnie są one tą samą liczbą) po czym omija wszystkie else i sprawdza warunek w while(a!=b), ponieważ są one równe (a==b) to kończy pętle.
Tak samo sytuacja będzie wyglądać, gdy program ominie pierwszy if i przejdzie do drugiego if((a!=0))||(b=0)) (źle zapisałeś b=0, powinno być wg twojego rozumowania b==0). Tutaj program zrobi dokładnie to samo - sprawi, że a i b będą miały te same wartości po czym przeskoczy do warunku while(a!=b) który jest spełniony, gdyż obecnie (a==b) i przerwie pętle.

Nice try tho wink

Podobne pytania

0 głosów
1 odpowiedź 432 wizyt
pytanie zadane 15 grudnia 2022 w SPOJ przez Pan_Blazej Nowicjusz (180 p.)
0 głosów
1 odpowiedź 295 wizyt
0 głosów
0 odpowiedzi 488 wizyt
pytanie zadane 14 maja 2018 w SPOJ przez coderCpp93 Gaduła (4,200 p.)

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...