Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Pomoc z rozwiązaniem problemu w C++


OCIUŚ

Rekomendowane odpowiedzi

Opublikowano

Witam, napisałem program liczący NWW w C++ ale nie działa on w dwóch przypadkach. Problem tkwi w tym aby znaleźć te dwa przypadki, osobiście nie mam żadnego pomysłu na to i liczę na pomoc z waszej strony. Oto program:

#include<iostream>
using namespace std;
 
int NWD(int a, int b )
{
  int pom;
 
    while(b!=0)
  {
      pom = b;
      b = a%b;
      a = pom;
    }
    return a;
}
 
int main()
{
  unsigned int a, b;
  cin>>a>>b;
  cout<<a*b/NWD(a, b )<<endl;
  return 0;
}

wagner.jpg

MPC Racing team | MPC Champion | Blue member

Opublikowano

Jeśli wprowadzi się nieprawidłowe dane(tekst, zbyt dużą liczbę), to program wariuje.

Jeśli wprowadzi się liczbę, która mieści się w unsigned int ale nie w int to program wariuje(ale po cichu).

Jeśli NWD zwróci 0, to wystąpi dzielenie przez 0.

Opublikowano

Moglibyście to poprawić, bo mnie już coś strzela, bo mi dalej testera programów w szkole wywala dwa błędy :/

wagner.jpg

MPC Racing team | MPC Champion | Blue member

Opublikowano

Jeśli wprowadzi się liczby których NWW nie zmieści się w int(np. 15470267, 15470269), to program podaje zły wynik.

Opublikowano

Wtedy jeśli wprowadzi się liczby których NWW nie mieści się w long long, to program poda zły wynik.

Wystarczy po prostu sprawdzać czy tak się nie stanie(a jak tak, to jakiś komunikat o błędzie wypisać czy coś).

Opublikowano

W takim razie możesz mieć problem nawet z long long intem.

Najlepszym rozwiązaniem byłoby napisanie klasy, która obsłuży liczby 128 bitowe (na bazie dwóch 64 bitowych)(lub skorzystać z już gotowych)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...