Querprodukt in C
-
Hallo Leute,
könnt ihr mir bitte sagen wie ich in C am besten und einfachsten das Querprodukt einer ganzheitlichen Zahl darstellen könnte? Also Zahl: 4375 Querprodukt: 4*3*7*5= 420
Danke im Voraus!
-
int p=1; while(x!=0){ p*=x%10; x/=10; }
-
Tipp: 4375 = 4*10^3 + 3*10^2 + 7*10^1 + 5*10^0.
Kannst du diese Zerlegung als Programm schreiben? (Weiterer Tipps: Integerdivision, Modulo) Wenn du das hast, dann ist die Aufgabe praktisch gelöst.
edit: Och, volkard.
-
WOW danke Leute das ging ja ruck zuck!! Ich freu mich sehr. Bin angehender Ingenieur und brauche das für Testate! Ihr habt mir sehr geholfen
-
SeppJ schrieb:
edit: Och, volkard.
Ich bin sicher, er versteht die Lösung und gibt nicht unverstandenen Code ab.
-
volkard schrieb:
int p=1; while(x!=0){ p*=x%10; x/=10; }
Hey, kann mir das jemand auch erklären? Also sagen was was bedeutet/macht?
Gruß
-
d3co schrieb:
Hey, kann mir das jemand auch erklären? Also sagen was was bedeutet/macht?
Ich glaube volkard hat sich gerade freiwillig gemeldet :p
-
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.
-
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 = 1234Ich 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 Nachkommastellen43 % 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.