Java :: Aufgabe #157

3 Lösungen Lösungen öffentlich

Funktion über eine Natürliche Zahl

Anfänger - Java von hollst - 20.02.2017 um 09:02 Uhr
Man schreibe ein Funktion f(n) mit dem Definitionsbereich (n) und dem Wertebereich (f(n)) der natürlichen Zahlen.

Die Funktion f(n) sei wie folgt zu konstruieren:

1.) Schreibe die Zahlen 1 ... n in absteigender Reihenfolge nebeneinander: n, n - 1, n - 2 ... 5, 4, 3, 2, 1
2.) Wandle diese Zahlen in ihre binärer Darstellen ohne führende Nullen: n, n - 1, n -2 ... 101, 100, 11, 10, 1
3.) Entferne jetzt das Komma zwischen den Binärzahlen, die sich damit ergebende neue Binärzahl ist f(n).

Beispiel: f(6) => 6, 5, 4, 3, 2, 1 => 110, 101, 100, 11, 10, 1 => 11010110011101 = 13725 (dezimal).

Fragen: Welchen Wert hat f(99)?

Lösungen:

1 Kommentar
vote_ok
von Allocortex (350 Punkte) - 22.02.2017 um 15:46 Uhr
Ergebnis: f(99) => 99, 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

=> 1100011, 1100010, 1100001, 1100000, 1011111, 1011110, 1011101, 1011100, 1011011, 1011010, 1011001, 1011000, 1010111, 1010110, 1010101, 1010100, 1010011, 1010010, 1010001, 1010000, 1001111, 1001110, 1001101, 1001100, 1001011, 1001010, 1001001, 1001000, 1000111, 1000110, 1000101, 1000100, 1000011, 1000010, 1000001, 1000000, 111111, 111110, 111101, 111100, 111011, 111010, 111001, 111000, 110111, 110110, 110101, 110100, 110011, 110010, 110001, 110000, 101111, 101110, 101101, 101100, 101011, 101010, 101001, 101000, 100111, 100110, 100101, 100100, 100011, 100010, 100001, 100000, 11111, 11110, 11101, 11100, 11011, 11010, 11001, 11000, 10111, 10110, 10101, 10100, 10011, 10010, 10001, 10000, 1111, 1110, 1101, 1100, 1011, 1010, 1001, 1000, 111, 110, 101, 100, 11, 10, 1

=> 11000111100010110000111000001011111101111010111011011100101101110110101011001101100010101111010110101010110101
00101001110100101010001101000010011111001110100110110011001001011100101010010011001000100011110001101000101100
01001000011100001010000011000000111111111110111101111100111011111010111001111000110111110110110101110100110011
11001011000111000010111110111010110110110010101110101010100110100010011110011010010110010010001110001010000110
00001111111110111011110011011110101100111000101111011010101101001001110010100011000011111110110111001011101010
01100011111010110011101

= 9223372036854775807 (dezimal)






Quellcode ausblenden Java-Code
import java.util.*;

public class NatZahl {
	public static void main(String [] args){

		System.out.print((long)f(99) + ( " (dezimal) "));
		
	}
	
	public static double f(int n){
		String Stringarray[] = new String[n];
		
		for(int i = n; i > 0; i--){
			if(i == n){
				System.out.print("f(" + n + ") => " + i + ", ");
			}
		else if(i != 1 && i < n){
			System.out.print(i + ", ");
			} 
		else{
				System.out.print(i + " => ");
			}
		}
		
		for(int i = n; i > 0; i--){
				Stringarray[i-1] = Integer.toBinaryString(i);
				if(i != 1){
				System.out.print(Stringarray[i-1] + ", ");
				}
				else{
					System.out.print(Stringarray[i-1] + " => ");
				}
		}
		
		List<String> help = new LinkedList<>();
	     for(int i = n; i > 0; i--){
	    	 help.add(Stringarray[i-1]);
	     }
	     String binarywo = String.join("", help);
	     System.out.print(binarywo + " = ");
	     double erg = binToDec(binarywo);

	   
		return erg;
	}
	 public static double binToDec(String bin) {
    	 double dec = 0L;
    	     double pow = 1;
    	     for (int i = (bin.length() - 1); i >= 0; i--) {
    	         char c = bin.charAt(i);
    	         dec = dec + (Double.parseDouble(c + "") * pow);
    	         pow = pow * 2;
    	     }
    	     return dec;
    	 }
}
1x
vote_ok
von PC-principal (1340 Punkte) - 03.03.2017 um 14:17 Uhr
Quellcode ausblenden Java-Code
import java.math.BigInteger;

public class Funktion {

	public static void main(String[] args) {
		// Schritt 1+2
		int fn = 12;
		String s = "";
		for (int j = 1; j <= fn; j++) {
			s = Integer.toBinaryString(j) + s;
		}

		//Schritt 3
		BigInteger res = BigInteger.ZERO;
		BigInteger ex = BigInteger.ONE;
		int oneORzero = -1;
		while (!s.equals("")) {
			oneORzero = Integer.valueOf(s.substring(s.length() - 1));
			if (oneORzero == 1) {
				res = res.add(ex);
			}
			ex = ex.shiftLeft(1);
			s = s.substring(0, s.length() - 1);
		}
		System.out.println(res);

	}
}
vote_ok
von Bufkin (1410 Punkte) - 12.09.2017 um 09:32 Uhr
Soll das eine besondere Zahl sein?

Quellcode ausblenden Java-Code
import java.math.BigInteger;

class natuerlicheZahl
{
    public static void main (String[] args) 
    {
        String f = "";
        int n = 99;
        for(int i = n; i > 0; i--) 
        {
            f = f.concat(Integer.toBinaryString(i));
        }
        BigInteger dezimal = new BigInteger(f, 2); 
        
        System.out.println("f: " + f);
        System.out.println("Dezimal: " + dezimal);        
    }
}
1809762

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.