Querprodukt in C



  • ich hab den code von volkard benutzt und abgesehen davon, dass die Quersumme von = 1 ausgibt hab ich noch bei ein paar zahlen, die ich einfach so eingegeben habe komische ergebnisse.
    So ist z.B. die quersumme von 4.765.367.436 = 0 (hab ich natürlich ohne . eingegeben)
    und die quersumme von 8.323.256.845 ist -4.148.928

    hat irgendwer eine idee, woran das liegen kann? vll. daran, dass die bibliothek nur von 36 tausend irgendwas bis - 36 tausend irgendwas geht?



  • Die von dir genannten Zahlen passen nicht in einen int rein. Lass sie dir direkt nach der Zuweisung mal anzeigen. Und achte demnächst auf die Warnungen, die dein Compiler dir gibt.



  • Michael E. schrieb:

    Die von dir genannten Zahlen passen nicht in einen int rein. Lass sie dir direkt nach der Zuweisung mal anzeigen. Und achte demnächst auf die Warnungen, die dein Compiler dir gibt.

    danke für das mit dem int. da hab ich gar nicht dran gedacht.

    was für warnungen hätte mein compiler denn ausspucken sollen? er hat mir nämlich gar nichts gesagt.



  • Meiner sagt z.B.

    1>main.cpp(1409): warning C4305: 'Initialisierung': Verkürzung von '__int64' in 'int'
    1>main.cpp(1409): warning C4309: 'Initialisierung': Verkürzung eines konstanten Wertes

    Wie sieht denn deine Definition genau aus? Und was ist dein Compiler-Output? Welchen Compiler benutzt du? Ist schon ungewöhnlich, dass der nix sagt.



  • ich hab mingw...
    was meinst du mit "wie sieht deine defnition aus?" wenn ich die o.g. zahlen im shell in scanf eingebe, spuckt er einfach die anderen o.g. zahlen aus. sonst steht da nichts...



  • Zeig mal deinen kompletten Code.



  • hab ich schon die Querprodukt herausfinden.
    Und wie kann ich eigentlicht die Querprodukt wieder in dieser
    for schleife einsetzen,also wieder rechnen,
    um bis einzahliger Zahl zu erreichen?



  • looser schrieb:

    hab ich schon die Querprodukt herausfinden.
    Und wie kann ich eigentlicht die Querprodukt wieder in dieser
    for schleife einsetzen,also wieder rechnen,
    um bis einzahliger Zahl zu erreichen?

    do-while-Schleife drum und als Bedingung (Quersumme > 10) nehmen.
    Und noch eine paar Zuweisungen.



  • Th69 schrieb:

    Laut http://de.wikipedia.org/wiki/Querprodukt ist das Ergebnis dann 0.
    Und daher würde ich das Querprodukt von 0 auch als 0 definieren.

    Das kann ich aus der Wikipedia-Seite so jetzt nicht rauslesen. Wo steht das?



  • SG1 schrieb:

    Th69 schrieb:

    Laut http://de.wikipedia.org/wiki/Querprodukt ist das Ergebnis dann 0.
    Und daher würde ich das Querprodukt von 0 auch als 0 definieren.

    Das kann ich aus der Wikipedia-Seite so jetzt nicht rauslesen. Wo steht das?

    Na ja, diesen Satz halte ich für recht eindeutig:

    Zwischen diesen Zacken fällt q(n) immer wieder auf 0; nämlich immer dann, wenn in n mindestens eine Ziffer 0 ist.

    Bei der Zahl 0 ist mindestens eine Ziffer 0.



  • Ich habe hier noch keine rekursive Version gesehen. Von daher...

    int querprodukt(int z) {
      return z<10 ? z : querprodukt(z/10)*(z%10);
    }
    


  • hallo, kann mir einer ne lösung zeigen wie man in c das iterierte querprodukt programmiert?

    mfg Maurice



  • Auf Seite 1 hat volkard einen entsprechenden Code gezeigt...



  • Aber nicht für das iterierte Querprodukt. Dazu müsste man noch eine Schleife drumherum machen ...



  • Würde mich jetzt auch interessieren 🙂



  • Also für das normale Querprodukt gilt ja:

    int main () 
    {
        int z=1, q=1;
        printf("Bitte Zahl eingeben: ");
        scanf("%d",&z);
        if (z==0){
            printf("Das Querprodukt ist %d\n",0);  
        }
        else
    
        {while (z>0) {
            q *= z%10;
            z/=10;
    
        }
            printf("Das Querprodukt ist %d\n",quer);
        }
    
        return 0;    
    
    }
    

    Wo müsste da die schleife hin damit ich das iterierte Querprodukt berechne? Ich habs mit der do-while schleife probiert, aber da kam immer was falsches raus.



  • also so schwer ist das wirklich nicht. in der Tat ist das so eeinfach, dass euch null geholffen ist, wenn ihr das jetzt einfach gelöst kriegt. Die 100 Minuten könnt ihr auch nachdenken.

    Habt ihr denn den vorher geposteten Code verstanden? wnen nicht, dann tut das. Danach solltest ihr bereit sein, eure schleeife drum herum zu schreiben.



  • die rechnung und so verstanden nur habe ich alles ausprobiert und komme nicht auf das ergebniss und muss bis 20 uhr die lösung einschicken also wenn einer so nett wäre mir bei der lösung zu helfen wäre ich dankbar.



  • dann hast du ja noch 2 stunden herauszukriegen, wo dein Problem ist. Glaubst du, die nächste Hausaufgabe wird lichter, wenn du diese nicht packst?

    Ich bezweifle ja, dass du alles ausprobiert hast, da wär ja die richtige Lösung mit dabei gewesen 🙂



  • doch ich habe alles versucht aber er gibt immer ein falsches ergebniss.
    denn Sinn habe ich ja auch verstanden nur manchmal kommt man einfach nicht drauf.
    und wenn ich den lösungsweg kenne kann ich daraus besser lernen anstatt keine punkte zu bekommen und die lösung trotzdem nicht zu kennen.
    kannst du nicht bitte nen tip geben?


Anmelden zum Antworten