! Klausuraufabe C++



  • DocShoe schrieb:

    Bitte formatiere deinen Quelltext vernünftig, so dass man ihn auch lesen kann. Das Formum bietet Code-Tags an, bitte benutze die auch. So schaut sich das niemand an.

    ok ich versuch das jetzt mal danke für die Information



  • class myClass
    {
    private:
    unsigned int n; // Das n kommt von hier. n ist ein Member dieser Klasse und steht allen Memberfunktionen zur Verfügung-
    string text; // Eine Zeichenkette
    
    public:
    
    void Loop1()
    { do
    {
    if (n%2==0) // Eine ganzzahlige Division mit Rest. Beispiel: 7%2 ist 3 Rest 1
    text = "0" + text; // 0 vorne anhängen
    else
    text = "1" + text; // 1 vorne anhängen
    n/=2; // Irgendwann wird n 0, da die Division mit Ganzzahlen eine Ganzzahl ergibt.
    }
    while (n!=0);
    }
    void get_result()
    {
    cout << "\nErgebnis: " << text << endl;
    }
    myClass(int x):n(x) // x ist der Parameter des Konstruktors. n ist Member der Klasse. n wird mit x initialisiert.
    {
    }
    };
    int main()
    { int i=-1;
    myClass * cPtr; // Ein Zeiger
    while (i>-4) // Mach was, solange i größer -4 ist.
    {
    cPtr=new myClass(i); // Erzeugt ein neues Objekt auf dem Heap. Der Zeiger zeigt nun auf dieses Objekt.
    cPtr->Loop1(); // Zeichenkette verändern
    cPtr->get_result(); // Ergebnis ausgeben
    i--; // i = i-1
    }
    return 0;
    } // Fehler, delete vergessen.
    


  • out schrieb:

    class myClass
    {
    private:
    	unsigned int n; // Das n kommt von hier. n ist ein Member dieser Klasse und steht allen Memberfunktionen zur Verfügung-
    	string text; // Eine Zeichenkette
    
    public:
    
    	void Loop1()
    	{
    		do
    		{
    			if (n%2==0) // Eine ganzzahlige Division mit Rest. Beispiel: 7%2 ist 3 Rest 1
    				text = "0" + text; // 0 vorne anhängen
    			else
    				text = "1" + text; // 1 vorne anhängen
    			n/=2; // Irgendwann wird n 0, da die Division mit Ganzzahlen eine Ganzzahl ergibt.
    		}
    		while (n!=0);
    	}
    
    	void get_result()
    	{
    		cout << "\nErgebnis: " << text << endl;
    	}
    
    	myClass(int x):n(x) // x ist der Parameter des Konstruktors. n ist Member der Klasse. n wird mit x initialisiert.
    	{
    	}
    };
    
    int main()
    {
    	int i=-1;
    	myClass * cPtr; // Ein Zeiger
    	while (i>-4) // Mach was, solange i größer -4 ist.
    	{
    		cPtr=new myClass(i); // Erzeugt ein neues Objekt auf dem Heap. Der Zeiger zeigt nun auf dieses Objekt.
    		cPtr->Loop1(); // Zeichenkette verändern
    		cPtr->get_result(); // Ergebnis ausgeben
    		i--; // i = i-1
    	}
    	return 0;
    } // Fehler, delete vergessen.
    

    Blubb.



  • Kellerautomat schrieb:

    Blubb.

    Man darf sich auch mal langweilen. 🤡



  • super erklärt!

    was bekommt n für einen Wert?

    und was gibt das Program aus?
    Ergebnis: ?



  • S.lukas schrieb:

    super erklärt!

    was bekommt n für einen Wert?

    und was gibt das Program aus?
    Ergebnis: ?

    Ausgabe:
    Ergebnis: 11111111111111111111111111111111

    Ergebnis: 11111111111111111111111111111110

    Ergebnis: 11111111111111111111111111111101

    n bekommt die Werte -1 -2 und -3



  • Du musst mich noch fragen was das Programm macht. 😃



  • unsigned int n; kann doch keine negativen werte bekommen, so kenn ich das.

    wieso kommt ergebnis 3 mal raus?

    und dann 32 zahlen entweder 1 oder null hmm



  • out schrieb:

    Du musst mich noch fragen was das Programm macht. 😃

    wollte ich auch gerade 😉 😕



  • S.lukas schrieb:

    unsigned int n; kann doch keine negativen werte bekommen, so kenn ich das.

    Richtig, hast du gut aufgepasst.
    n bekommt die Werte
    2^32-1
    2^32-2
    2^32-3

    S.lukas schrieb:

    wieso kommt ergebnis 3 mal raus?

    Weil die Schleife 3x durchläuft.

    S.lukas schrieb:

    und dann 32 zahlen entweder 1 oder null hmm

    Richtig. :p



  • S.lukas schrieb:

    out schrieb:

    Du musst mich noch fragen was das Programm macht. 😃

    wollte ich auch gerade 😉 😕

    😃 Dezimal Binär Umrechner



  • 2^32 =4294967296

    wie kommt die 2^32 zustande?

    aber dank dir komm ich langsam rein:)



  • S.lukas schrieb:

    2^32 =4294967296

    wie kommt die 2^32 zustande?

    Hast du doch selbst schon beantwortet. unsigned kennt keine negativen Zahlen. Was nicht passt wird passend gemacht. Es gibt einen Unterlauf und wir landen bei der größten unsgined Zahl.

    Ich seh grad du hast ja 2 Aufgaben, also auf gehts zur anderen:D



  • aso die größte unsigned int zahl ist 2^32 baaam . super vielen vielen dank;)



  • GenauerRichtiger gesagt 2^32-1



  • also 4294967296-1 machen ist dann 4294967295
    4294967296-2 " 4
    4294967296-3 " 3

    hab ich das so richtig verstanden?



  • S.lukas schrieb:

    also 4294967296-1 machen ist dann 4294967295
    4294967296-2 " 4
    4294967296-3 " 3

    hab ich das so richtig verstanden?

    Ja



  • S.lukas schrieb:

    aso die größte unsigned int zahl ist 2^32 baaam . super vielen vielen dank;)

    Eigentlich kann man die Aufgabe garnicht bearbeiten ohne Zusatzinformation, wie groß unsigned int sein soll. Das hängt nämlich von der Implementierung ab.
    Der restliche Code ist auch mehr als gruselig ... schade, dass Du so einen unterirdischen Lehrer hast. Nur aus Interesse: Was für ein Kurs ist das? Schule, Uni?



  • vielen dank an alle die sich beteiligt haben und geholfen haben. euch einen sonnigen tag noch!


Anmelden zum Antworten