Osaako joku kertoa mikä tässä mättää?
Koodin tulisi pyöristää luvut yhden desimaalin tarkkuuteen.
Tällä tavalla tuon pitäisi toimia:
Anna jokin desimaaliluku: 8.49334545 Luku on pyöristettynä 8.5
print "Anna jokin desimaaliluku: ";luku = gets luku = luku.to_f * 10 luku = luku.round luku = luku.to_f / 10 puts "Luku on pyöristettynä #{luku}" (Ruby)
No niinhän se toimii?
Siis toimii koodi, mutta järjestelmä ei sitä hyväksy vaan sanoo "Your program's output is longer than expected"
Kyllä toimi ainakin kun testasin osoitteessa https://repl.it/repls/
Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?
koodia111 kirjoitti:
Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?
Ensin yleisvinkki: kielen standardikirjaston dokumentaatiosta on usein apua ohjelmoitaessa.
Ikinä en ollut (tätä ennen) rubyä ohjelmoinut, mutta kirjastosta ( https://ruby-doc.org/core-2.1.2/Float.html ) löytyi, että ”round”-komento ottaa parametrinaan halutun pyöristystarkkuden.
print "Anna jokin desimaaliluku: ";luku = gets luku = luku.to_f.round(2) puts "Luku on pyöristettynä #{luku}" (Ruby)
Jos tuota ei olisi löytynyt tuolta, niin olisin sanonut, että tee oma funktio, jonka sisällä teet tuon ”kerro–pyöristä–jaa” -toimituksen. Siten se (toistettava) osa lyhenisi yhteen funktiokutsuun.
koodia111 kirjoitti:
Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?
vaikka ihan:
print "Anna jokin desimaaliluku: " luku = gets.to_f.round(2) puts "Luku on pyöristettynä #{luku}"
*edit* kappas, L2-K2 olikin jo ehtinyt
kiitokset näistä!
Aihe on jo aika vanha, joten et voi enää vastata siihen.