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

NWD spoj nieprawidlowy algorytm

Konkurs Mistrz Programowania
0 głosów
210 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ź 683 wizyt
pytanie zadane 15 grudnia 2022 w SPOJ przez Pan_Blazej Nowicjusz (180 p.)
0 głosów
1 odpowiedź 523 wizyt
0 głosów
0 odpowiedzi 550 wizyt
pytanie zadane 14 maja 2018 w SPOJ przez coderCpp93 Gaduła (4,200 p.)

93,653 zapytań

142,574 odpowiedzi

323,089 komentarzy

63,169 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

Kursy INF.02 i INF.03
...