Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
NWD, algorytm Euklidesa
/** PLIK JEST ZAPISANY W UTF-8 */ #include <utility> #include <stdexcept> /** back-end, nie sprawdza poprawności argumentów */ /* Używać gdy jest się pewnym że podawane argumenty są nieujemne */ template<typename T> T _NWD(T a, T b){ /* dla mojej wygody chcę aby zmienna a przechowywała większą liczbę */ if(a<b) std::swap(a, b); //zamienia `a` z `b` while(b!=0) { /* używam zmiannej tymczasowej aby uniknąć swappowania */ /* reszta jest nie większa od `b`, a ja chcę * aby `a` przechowywała największą liczbę, * więc potrzebuję umieścić resztę w `b`, * ale zanim to zrobię, potrzebuję przenieść `b` do `a`, * aby nie utracić informacji którą przechowuje. */ const T reszta = a%b; a = b; b = reszta; } return a; } template<typename T> inline T NWD(const T a, const T b) { if(a<0 or b<0) throw std::invalid_argument("Co najmniej jeden z argumentow jest ujemny"); /* poniważ jest to szablon, argumenty nie muszą być liczbami! */ return _NWD(a, b); } /* main został zmodyfikowany w stosunku do kodu który oddałem na sprawdzianie, * aby program działał dobrze tutaj, na Rextesterze */ /* Zadanie brzmi: mapisz funkcję. * Poniższy kod służy tylko do testów i domyślnie nie jest kompilowany*/ #ifdef DEBUG #include <iostream> int main(){ std::clog << __cplusplus << std::endl; int a, b; while(std::cin >> a >> b){ std::cout << "NWD(" << a << ", " << b << ")="<< NWD(a, b) << '\n'; } } #endif
run
|
edit
|
history
|
help
0
123
cast
Count of factors
OperatorOverload2
Queue with Limited Size of Arrays
Faaaaak
xyp
LRUCache
said
SpiralMatrix