Potenzieren :-(



  • hi,
    danke für die Antworten.
    0 und negativ sind egal. vorerst sollte es nur mit positiven getestet werden 🙂 danke ich melde mich gleich



  • akari schrieb:

    Hallo

    Wo ist dein Problem? 😕
    Wenn du pow nicht verwenden willst, sondern lieber eine Schleife, dann mach das doch

    int x = ...;
    int y = 2;
    for (int lv = 1; lv < x; ++lv)
    {
      y *= 2;
    }
    // In y steht nun 2^x
    

    bis bald
    akari

    DocShoe deine Lösung verstehe ich leider nicht, da ich diese auch erklären muss, bringt mir das leider nicht viel 😞

    zu akari das hört sich gut an ich schreib ma fix mein Beispiel hin und warum mich deins durcheinander bringt 🙂

    void main()
    {
      int a=2;
      int x,ergebnis;
      for(int i=1;i<=x;i++)
      {
        ergebnis=a*a;
        cout<<ergebnis;
      }
    }
    

    wollte deins benutzen, jedoch verstehe ich das in der for Schleife nicht, des Weiteren muss ich es ausgeben 😞 was nun?



  • akari schrieb:

    Hallo

    Wo ist dein Problem? 😕
    Wenn du pow nicht verwenden willst, sondern lieber eine Schleife, dann mach das doch

    int x = ...;
    int y = 2;
    for (int lv = 1; lv < x; ++lv)
    {
      y *= 2;
    }
    // In y steht nun 2^x
    

    bis bald
    akari

    Der Code liefert für x=0 das Ergebnis 2. Besser y mit 1 initialisieren und lv von 0 gegen x laufen lassen.



  • DocShoe schrieb:

    akari schrieb:

    Hallo

    Wo ist dein Problem? 😕
    Wenn du pow nicht verwenden willst, sondern lieber eine Schleife, dann mach das doch

    int x = ...;
    int y = 2;
    for (int lv = 1; lv < x; ++lv)
    {
      y *= 2;
    }
    // In y steht nun 2^x
    

    bis bald
    akari

    Der Code liefert für x=0 das Ergebnis 2. Besser y mit 1 initialisieren und lv von 0 gegen x laufen lassen.

    habe das jetzt geändert, allerdings will ich ja in der for Schleife immer die Ausgabe haben also

    fester wert=2
    cin x
    x=z.B.3

    for schleife

    ausgabe
    2
    4
    8

    weisste wie ich das meine?

    wenn ich jetzt in der for Schleife cout<<a*=2; mache, dann gibt es einen Fehler, den ich nicht verstehe. Wie kann ich die Ausgabe machen?



  • Dieser Thread wurde von Moderator/in KlausB aus dem Forum VCL (C++ Builder) in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    int a=1;
      int x;
      cin >> x;
      for(int i=0;i<x;i++)
      {
        a=a*2;
        cout<<"2^" << (i+1) << " = " << a << std::endl;
      }
    

    bis bald
    akari



  • Poste den Quelltext, der den Fehler produziert.
    Beschreibe den Fehler, der auftritt. Ist es ein Compilerfehler oder produziert dein Programm nicht die erwarteten Ergbnisse?

    Ohne diese Informationen kann man nur raten, was du tust und was der "Fehler" ist.



  • Hallo

    Der Fehler war das

    cout<<a*=2;
    

    keine gültige C++ Anweisung ist 😉

    bis bald
    akari



  • Hi,
    ne funktioniert leider nicht richtig.
    bei der Abfrage habe ich mal 2 eingegeben. Demnach ist es ja 2^2. ausgabe ist 48. Also 4 und 8... falsch 😞 was nun?



  • DocShoe schrieb:

    Poste den Quelltext, der den Fehler produziert.
    Beschreibe den Fehler, der auftritt. Ist es ein Compilerfehler oder produziert dein Programm nicht die erwarteten Ergbnisse?

    Ohne diese Informationen kann man nur raten, was du tust und was der "Fehler" ist.

    stimmt. mache ich sofort 🙂



  • Hallo

    Ich habe keine Ahnung was für einen Quellcode du benutzt, aber meiner lifert ein korrektes Ergebnis :

    2
    2^1 = 2
    2^2 = 4
    

    bis bald
    akari



  • #include<iostream>
    using namespace std;
    
    void main()
    {
    	int a=2,x;
    	cout<<"Die Basis ist 2.\n";
    	cout<<"geben Sie den exponenten ein:";
    	cin>>x;
    	for (int i=0;i<x;i++)
    	{
    		a=a*2;
    		cout<<a;
    	}
    }
    

    das ist mein Quellcode 😃
    Also nochmal zur Ausgabe: 2^x soll gerechnet werden meine Vorgabe ist 2 und x soll eingegeben werden. Die Ausgabe soll bei 2^3 z.B. 248 sein bzw.
    2
    4
    8

    aber so ein kleines Problem so einen riesen Aufwand 😞 sitze schon seit 2 Stunden daran 😞



  • Hö?

    int twoPower(int x)
    {
       return 1 << x;
    }
    

    läuft.



  • Eisflamme schrieb:

    Hö?

    int twoPower(int x)
    {
       return 1 << x;
    }
    

    läuft.

    ja und was ist twoPower?....



  • Mathematisch beschrieben ist das dann f(x) = 2^x

    Aber du schreibst jetzt oben auch, dass 2 x 3 = 248 sein soll, was ich dann wiederum nich verstehe.

    Die Ausgabe soll bei 2^3 z.B. 248 sein

    Wie ist jetzt deine mathematische Definition?



  • #include<iostream>
    using namespace std;
    
    void main()
    {
    	int a=2,x;
    	cout<<"Die Basis ist 2.\n";
    	cout<<"geben Sie den exponenten ein:";
    	cin>>x;
    	for (int i=0;i<x;i++)
    	{
    		a=a*2;
    		cout<<a;
    	}
    }
    

    Dann geh es halt durch. Du weißt ja wie Potenzieren läuft.
    2^0 = 1
    2^1 = 2
    2^2 = 4.
    Was macht deine Schleife? Sie multipliziert den aktuellen Wert con a mit 2. Ist ja logisch. Doch macht sie es so we du denkst?
    1. Kontrollcheck: x=0 -> x<2 -> a=2 -> a2 = 4
    2. Kontrollcheck: x=1 -> x<2 -> a=4 -> a
    2 = 8
    3. Kontrollcheck: x=2 -> x=2 -> Abbruch.
    Und das heißt jetzt... (lies mal paar posts weiter oben...
    Und jetzt bin ich der böse, weil ich deine Hausaufgabe gemacht hab...

    Ciao
    Nullnix



  • Ich glaube, er möchte alle Potenzen für 2x für x = [0..n] ausgeben. Die 248 aus dem Posting oben sind dann wohl eher 2,4,8...

    Zwei Stunden.. ZWEI STUNDEN!?

    @NullNix
    Ich war auch schon kurz davor. Zumal ja wirklich alle Informationen für den 3-Zeiler vorhanden sind, wenn man sich nur mal die Antworten durchliest.

    Allen Ernestes zwei Stunden?!



  • Eisflamme schrieb:

    Mathematisch beschrieben ist das dann f(x) = 2^x

    Aber du schreibst jetzt oben auch, dass 2 x 3 = 248 sein soll, was ich dann wiederum nich verstehe.

    Die Ausgabe soll bei 2^3 z.B. 248 sein

    Wie ist jetzt deine mathematische Definition?

    248=2 4 8 =
    2
    4
    8
    🙂 falsch ausgedrückt habe die Zahlen hintereinander geschmissen.



  • DocShoe schrieb:

    Ich glaube, er möchte alle Potenzen für 2x für x = [0..n] ausgeben. Die 248 aus dem Posting oben sind dann wohl eher 2,4,8...

    Zwei Stunden.. ZWEI STUNDEN!?

    @NullNix
    Ich war auch schon kurz davor. Zumal ja wirklich alle Informationen für den 3-Zeiler vorhanden sind, wenn man sich nur mal die Antworten durchliest.

    Allen Ernestes zwei Stunden?!

    Jop 2 Stunden 😃 ohne Plan und ... funktioniert es nunmal nicht.



  • Nullnix schrieb:

    #include<iostream>
    using namespace std;
    
    void main()
    {
    	int a=2,x;
    	cout<<"Die Basis ist 2.\n";
    	cout<<"geben Sie den exponenten ein:";
    	cin>>x;
    	for (int i=0;i<x;i++)
    	{
    		a=a*2;
    		cout<<a;
    	}
    }
    

    Dann geh es halt durch. Du weißt ja wie Potenzieren läuft.
    2^0 = 1
    2^1 = 2
    2^2 = 4.
    Was macht deine Schleife? Sie multipliziert den aktuellen Wert con a mit 2. Ist ja logisch. Doch macht sie es so we du denkst?
    1. Kontrollcheck: x=0 -> x<2 -> a=2 -> a2 = 4
    2. Kontrollcheck: x=1 -> x<2 -> a=4 -> a
    2 = 8
    3. Kontrollcheck: x=2 -> x=2 -> Abbruch.
    Und das heißt jetzt... (lies mal paar posts weiter oben...
    Und jetzt bin ich der böse, weil ich deine Hausaufgabe gemacht hab...

    Ciao
    Nullnix

    ne bist nicht der böse bist n lieber 😃 gemacht haste sie ja nicht 😉


Anmelden zum Antworten