Ruby :: Aufgabe #56
1 Lösung

Zahlenausgabe in verschiedenen Schreibweisen
Anfänger - Ruby
von pocki
- 26.11.2014 um 11:53 Uhr
Schreibe ein Programm, welches eine positive Ganzzahl in dezimaler Schreibweise entgegen nimmt.
Gib diese Zahl dann in binärer, oktaler und hexadezimaler Schreibweise, ohne Verwendung der integrierten Formatierungsfunktionen, wieder aus.
Beispiel:
Gib diese Zahl dann in binärer, oktaler und hexadezimaler Schreibweise, ohne Verwendung der integrierten Formatierungsfunktionen, wieder aus.
Beispiel:
Konsolenausgabe:
Zahl eingeben: 365
binär: 101101101
oktal: 555
hexadezimal: 16D
Lösungen:

def dec_to_x(decimal, base) =begin In: - Decimal number preentered by the user - Base of the numbersystem the decimal has to be converted to (2, 8, 16) Out: - converted decimal number =end #Section - CODE #Section - Declaration start = decimal exponent = 0 result = "" numsys = "" hex = {10 => "A", 11 => "B", 12 => "C", 13 => "D", 14 => "E", 15 => "F"} #Section - Naming Numbersystem case base when 2 numsys = "Binary" when 8 numsys = "Octal" when 16 numsys = "Hexadecimal" else return end #Section - Converting if decimal == 0 result = "0" elsif decimal > 0 #calculating the highest fitting exponent for decimal >= base ** exponent exponent = Math.log(decimal, base).to_i loop do fits = 0 # how often does the base**exponent fit in the decimal? fits += decimal / base ** exponent # reducing decimal decimal -= fits * base ** exponent #in case of hexadecimal numbersystem converting fits if base == 16 && fits >= 10 fits = hex[fits] end #filling result result += "#{fits}" #reducing the exponent by 1 exponent -= 1 #setting break-condition break if exponent < 0 end else return end #Section - Output puts "#{numsys}: #{result}" end #getting the decimal number dec = gets.to_i #outputting the decimal number puts "Decimal: #{dec}" #running method for each numbersystem dec_to_x(dec , 2) dec_to_x(dec , 8) dec_to_x(dec , 16)