Integer-Werte nebeneinander in neuen Integer schreiben.



  • N'Abend Leute,

    hab hier ein Problem und komme leider nicht drauf. Ich habe eine Funktion die mir eine Zufallszahl generiert. Nun möchte ich in einer neuen Funktion 5 dieser Zufallswerte in ein neuen Integer schreiben.

    Bsp:
    Funktion 1 :
    1. Durchlauf zahl=1
    2. Durchlauf zahl=2
    3. Durchlauf zahl=3
    4. Durchlauf zahl=4
    5. Durchlauf zahl=5

    Funktion 2

    zahl = 12345

    Das ganze MUSS ohne Array realisiert werden. Leider steh ich gerade auf dem Schlauch 😕 Hoffe ihr könnt mir helfen!
    Hier ein Auszug aus dem Code:

    int zufall(int z)
    
    {
    
    	int zahl;
    
    	zahl=rand() %  z + 1;
    	return zahl;
    }
    int zufall5()
    {
    	int zahl5;
    	int z = 6;
    	// HILFE :-)
    	return zahl5;
    }
    

    ´

    Gruß Chippo! 😉


  • Mod

    Hier ein Tipp:
    51=5.
    4
    10=40.
    3*100=300.
    300+40+5=345.



  • int zufall(int z)
    
    {
    
    	int zahl;
    
    	zahl=rand() %  z + 1;
    	return zahl;
    }
    int zufall5()
    {
    	int zahl1, zahl2, zahl3, zahl4, zahl5;
    	int zahlend;
    	int z = 6;
    	zahl1 = zufall(z) * 10000;
    	zahl2 = zufall(z) * 1000;
    	zahl3 = zufall(z) * 100;
    	zahl4 = zufall(z) * 10;
    	zahl5 = zufall(z);
    	zahlend = zahl1 + zahl2 + zahl3 + zahl4 + zahl5;
    
    	return zahlend;
    }
    

    Ich könnte schwören es geht noch schöner, aber es tut was es soll.
    Vielen Dank für den Tipp!!


  • Mod

    Wenn sich Code oft in gleicher oder ähnlicher Form wiederholt, kann man ihn oft mittels Funktionen und/oder Schleifen verkürzen. Was man dann im allgemeinen als "schöner" bezeichnet. Hier böte sich eine Schleife an. Noch ein Tipp:
    101 = 10.
    10
    10 = 100.
    10100 = 1000.
    10
    1000 = 10000.

    So ganz im Allgemeinen: Was soll das werden, wenn es fertig ist? Es sieht so aus, als wolltest du eigentlich etwas machen, das irgendwie mit einzelnen Ziffern arbeitet. Aber anstatt mit einzelnen Ziffern zu arbeiten, brichst du dir einen dabei ab, einzelne Ziffern in eine Zahl zu stopfen (und vermutlich später genauso mühsam wieder heraus zu holen).



  • Das wird ein automatischer Passwortgenerator. Für jeden 5stelligen Integerwert gibt es ein Wort bzw. Nummer. Die Zahlen werden "gewürfelt". Deswegen auch die Funktionen. Das ganze wird dann mit Hilfe von diceware realisiert.


  • Mod

    chippo schrieb:

    Das wird ein automatischer Passwortgenerator. Für jeden 5stelligen Integerwert gibt es ein Wort bzw. Nummer. Die Zahlen werden "gewürfelt". Deswegen auch die Funktionen. Das ganze wird dann mit Hilfe von diceware realisiert.

    Dir ist schon klar, dass der ganze Sinn von diceware ist, dass man das zu Hause ohne große Kenntnis von Zufallszahlenerzeugung mit dem Computer machen kann? Ein Computerprogramm, das diceware benutzt, ist unnötig umständlich und wäre um nichts besser als einfach direkt eine große Zufallszahl als Wortindex zu ziehen. Aber rand ist ohnehin nicht für diesen Zweck geeignet. Sowohl die Entropie als auch die Periodenlänge sind viel zu niedrig. Nicht umsonst steht in der Originalbeschreibung von diceware dick hervorgehoben:

    Do not use a computer program or electronic dice generator.

    Das richtet sich genau an Leute wie dich.



  • Mag sein, aber das ist alles eine Aufgabe von unserem Lehrer 😃



  • chippo schrieb:

    Ich könnte schwören es geht noch schöner, aber es tut was es soll.
    Vielen Dank für den Tipp!!

    Eine Ziffer hinten anhängen:

    neue zahl = alte zahl * 10 + ziffer

    Eine Ziffer vorne anhängen:

    neue zahl = Ziffer *10^(Anzahl der Stellen der alten Zahl) + alte Zahl


Anmelden zum Antworten