Querprodukt in C



  • 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?



  • definiere falsch. Das ist der beste Tipp, den ich dir geben kann: wenn etwas falsch ist, überlege dir, inwiefern es falsch ist. Mach Testausgaben schau nach wo der Fehler auftritt.

    Ich kann über den code drüber schauen und dir tipps geben, aber ich gebe keine Komplettlösung.



  • Nach diesem Schema müsste es doch eigentlich auch gehen oder?

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

    Aber irgendwo hakt es noch



  • tipp:

    der algorithmus funktioneirt so:

    1. lies ein Zahl ein
    2. solange zahl >= 10
    2.1 berechne querprodukt quer von Zahl
    2.2 setze zahl = quer.
    3. quer=zahl


Anmelden zum Antworten