@wolodia: base = "case %{num}: { for(int i = 0; i < b; i = i + 1) { a = a * %{num}; } a = a / %{num}; // nie wiem czemu mnozy sie 1x za duzo :( \n return a; }" File.write('x.cpp', (0..1000).map{|n| base % {num: n}}.join("\n")) i clang-format ;)
@phat: to nie jest dobre rozwiązanie, bo mogą ci wyjść wyniki typu 14,999999999998 zamiast 15
poza tym widać że to typowe zadanie na ćwiczenie pętli albo rekurencji ale oczywiście mirki muszą wymyślać implementowanie mnożenia w assemblerze xD musieliście być tymi irytującymi chłopakami w szkole którzy na siłę kłócą się z nauczycielem i myślą że są najmądrzejsi
@MajsterTS: bo float/double ma ograniczoną precyzję. dzielenie 1/10 da ci nieskończone rozwinięcie w systemie binarnym, więc nie masz 100% dokładności, i tak powstaje błąd.
return a+a+a+a+a+a+a+a+a+a+;http://melpon.org/wandbox/permlink/bNSY9XZA0JhxKUKr
base = "case %{num}: { for(int i = 0; i < b; i = i + 1) { a = a * %{num}; } a = a / %{num}; // nie wiem czemu mnozy sie 1x za duzo :( \n return a; }"File.write('x.cpp', (0..1000).map{|n| base % {num: n}}.join("\n"))i
clang-format;)@phat: to nie jest dobre rozwiązanie, bo mogą ci wyjść wyniki typu 14,999999999998 zamiast 15
poza tym widać że to typowe zadanie na ćwiczenie pętli albo rekurencji ale oczywiście mirki muszą wymyślać implementowanie mnożenia w assemblerze xD musieliście być tymi irytującymi chłopakami w szkole którzy na siłę kłócą się z nauczycielem i myślą że są najmądrzejsi
b !== 0 ? a / (1 / b) : b
@remek4x4:
Można jeszcze zrobić to za pomocą dzielenia, tylko i wyłącznie, bez pętli : d