Querprodukt in C



  • int x=4712;//Die Zahl, von der das Querprodukt berechnet werden soll. 
    int produkt=1;//Erstmal auf 1 setzen, und dann immer die weiteren Ziffern draufmultiplizieren. 
    while(x!=0){//Solange noch Ziffern in x drin sind
      int letzteZiffer=x%10;//Die letzte Ziffer kann man berechnen mit x%10, das ist der Divisionsrest, wenn man durch 10 teilt. 
      produkt*=letzteZiffer;//Und die letzte Ziffer wird aufs Produkt draufmultipliziert
      x/=10;//Und hier wird die letzte Ziffer abgeschnnitten, indem x durch 10 geteilt wird. 
    }
    

    edit: Zeile 5 repariert.


  • Mod

    Jetzt hast du es kaputt vereinfacht (Zeile 5).



  • Hallo lieber seppj,

    ich muss genau das selbe Programm schreiben wie der angehende Ingenieur schreiben!
    Habe aber überhaupt keine Kenntnisse im programmieren und habe daher auch nicht das mit der Integer Division und dem Modulo verstanden.

    Wäre sehr nett wenn du mir helfen könntest.

    MFG Matze



  • Vielen Dank Volkard!
    Jetzt hab ichs auch verstanden..

    @Matze, bist du in Hannover? ^^



  • @ertgfdh

    Bin auch ein Hannoveraner 😉 Finde für die ersten Testate ist das ganze schon recht komplex.

    Aber mal ein Beispiel als Erklärung:

    Wenn du 12345 durch 10 teilst kommst du ja normalerweise auf 1234,5

    Wie du siehst ist die 5 nun hinterm Komma seperiert.

    12345 % 10 = 5
    12345 / 10 = 1234

    Ich denke jetzt ist klar was die beiden Operatoren machen. "%" gibt dir den Rest der Division also die 5. "/" schneidet hingegen den rest ab.

    Da ja egal ist ob du von vorne oder hinten anfängst zu multiplizieren kommt das ganze in eine Schleife. Die macht dann nichts anderes als immer die letzte Ziffer der Zahl zu extrahieren bis die Zahl keine Stellen mehr hat.

    Gruß Yannic



  • ertgfdh schrieb:

    Habe aber überhaupt keine Kenntnisse im programmieren und habe daher auch nicht das mit der Integer Division und dem Modulo verstanden.

    Grundschule 2. oder 3. Klasse
    `43 : 8 = 5 Rest 3 (denn 5 * 8 + 3 = 43)

    33 : 9 = 3 Rest 6 (denn 3 * 9 + 6 = 33)

    11 : 3 = 3 Rest 2 (...`

    Das ganze in C:
    `43 / 8 == 5 // Ganzzahldivision, keine Nachkommastellen

    43 % 8 == 3 // Modulowert (Rest der Ganzzahldivision)`



  • Wer ist hier alles von der Leibnizuni Hannover ? 😃



  • Ich denk mal alle, die nach der Lösung fragen.. also auch ich 😛



  • Ich habe ja für Aufgabe 2a noch selber ne Lösung gefunden aber b konnte man damit nicht mehr umsetzten, jedenfalls ich nicht :D. Oder weiß hier jemand, wie man eine integer zahl in einen char string umwandelt? Andersherum habe ich es hingekriegt.



  • Was ist eigentlich das Querprodukt von 0? (Und was ist eine „ganzheitliche“ Zahl?)



  • Das Querprodukt von 0 ist natürlich 0.



  • Und was gibt volkards Algorithmus für 0 aus?



  • Wisst ihr wie man eine Schleife für das iterierte Querprodukt einbauen kann? Ich scheiter hier kläglich...

    Und volkards Algorithmus gibt 1 für das Querprodukt von 0 aus.



  • Spaddel schrieb:

    Das Querprodukt von 0 ist natürlich 0.

    Mist. Und ich habe noch gezweifelt, als ich da "while" getippt hatte.



  • Wobei die Frage bleibt, ob das Querprodukt für 0 überhaupt definiert ist. Je nach Definition gehts dabei nämlich um "positive number", "natürliche Zahl" (wobei nicht klar gestellt ist ob N oder N0) etc.


  • Mod

    Und wie ist es bei Zahlen mit 0 drin definiert? Ergebnis sofort 0 oder ist man da großzügig wie bei Produktreihen und ignoriert endlich viele Nullen?



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



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


Anmelden zum Antworten