Swego czasu, w wątku --> 568. Zabawne dodawanie Piotrusia @j4rooo, wkleił poniższy fragment kodu:
int get_backward(int a){
int result = 0;
while(a) {
result *= 10;
result += a % 10;
a /= 10;
}
return result;
}
Napisałem tam: "Kod @j4rooo też nie jest doskonały i kiedyś w wolnej chwili wstawię [myślę] że odrobinę lepszy mój "
No i nadszedł taki moment.
- Nazwa funkcji, powinna być opisowa, ale opisywać co a nie jak. Więc przedrostek get_, jest tu zbędny. Jeżeli myślisz inaczej, powinieneś natychmiast pozmieniać nazwy wszystkich funkcji w biblitekach, na np: get_sin, get_cos itd. Przedrostki get i set są w programowaniu obiektowym [w klasach] zarezerwowane do getterów i setterów, a backward to przecież “zwykła” funkcja, czyż nie?
- Funkcja [backward] jest w zasadzei doskonała, i spełnia swoje zadanie, jeżel jest nim uzyskanie AC. Ale przecież tu chodzi o coś więcej niż tylko AC. Chodzi o naukę i doskonalenie. Dlatego, poniżej kolejne [2] moje wersje, bez zbędnego komentowania:
int backward (int number, int base = 10){
int result = 0;
do
result = result * base + number % base;
while (number /= base);
return result;
}
A co, gdy chcielibyśmy mieć taką samą funkcję dla liczb typu long long lub unsigned? W języky C, zastosowałbyś pewnie przeciążanie nazwy funkcji, ale w C++ możesz , a nawet powinieneś wykorzystać szablon [template]
template <class Number>
Number backward (Number number, int base = 10){
Number result = 0;
do
result = result * base + number % base;
while (number /= base);
return result;
}
Szczęśliwego Nowego 2018 Roku!
created
last reply
- 18
replies
- 2.8k
views
- 5
users
- 5
likes
- 15
links