Zum Inhalt springen

Quersumme errechnen


freshes

Empfohlene Beiträge

Hallo, ich bin noch ein Anfänger und versuche gerade erst durch den Stoff durchzusteigen, bitte keine Haue ;)

Folgendes Problem: ich soll eine Quersumme von der Zahl 1543 (als Beispiel, beliebige vierstellige Zahl) bestimmen, und zwar gibt es einige Vorgaben:

- die Quersumme einer natürlichen Zahl soll berechnet werden

- wenn der Anwender eine negative ganze Zahl eingibt, wir diese mit (-1) multipliziert

- für den ganzzahligen Rest soll der Modulooperator (%) eingesetzt werden, für die Berechnung ganzzahliger Quotienen der Divisionsoperator (/)

- die Summanden der Quersumme werden in einer Schleife berechnet. Nach Ende der Schleife wird die Quersumme ausgegeben

soviel dazu. so sieht im Moment mein Programm aus:


class A1B3

{public static void main(String args[]) 

 {int q=1543;  

  int su=1; 

  int m=10;

  System.out.println("Quersumme");

  while (q>=1)

  { su=q%m;

  { System.out.println(q+"%"+m+"="+su);

    q=q/m;

  }

  System.out.println("Ende der Berechnung");

 }

}

}

ich hab die Summanden ausgegeben. Problem ist jetzt aber, wie ich die Summanden am Ende der Schleife addiere, um auf die Quersumme zu kommen. Wie mache ich das denn? Und das mit der Multiplikation von (-1) hab ich auch nocht nicht ganz begriffen...hoffe ihr könnt mir helfen.

Bearbeitet von flashpixx
Code-Tags eingefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

Vorab es gibt hier im Forum auch Möglichkeiten Code einzurücken, nutze diese bitte auch.


class A1B3

{

public static void main( String args[] ) {

[INDENT]int q = 1543;

int su = 1;

int m = 10;

System.out.println("Quersumme");

[INDENT]while (q >= 1) { 

su = q%m;

System.out.println(q + "%" + m + "=" + su);

q = q/m;


System.out.println("Ende der Berechnung");

}[/INDENT]


}

[/INDENT]}


So wäre der Code deutlich lesbarer. Setze die öffnende Klammer am besten noch in der dazu gehörenden Klammer und lass bei Ausgaben und Zuweisungen ein paar Leerzeichen dazwischen. ich habe das an deinem Code Beispielhaft mal gemacht. Der eine Blog (die Klammern) waren unnötige, ich habe dies mal entfernt . Ich finde gut, das die Variabeln klein geschrieben hast, das war Java-Konform.

Zur Lösung deiner Fragen.

Für negative Werte musst du vor dem Rechnen eine Abfrage einbauen, die Prüft ob dein wert Negativ ist.

Für die Quersumme könntest du deine ganze Zahl nehemen und diese in einen String convertieren. Dafür gibt es feste Methoden siehe auch Konvertierung von Strings in Integer und umgekehrt

Als String kannst du dann die Zahl an jeder Ziffer mit der "split()" Funktion trennen. Du erhälst ein Array an Strings.

Dann durchläufst du das array mit einer Schleife und onvertierst jede Ziffer zurück in einen int und addierst diese - fertig

Link zu diesem Kommentar
Auf anderen Seiten teilen

So schön einfach wie die Lösung von euch beiden ja sein mag, wird sie freshes rein garnichts bringen, da, wie in seinem Post beschrieben, er recht genaue Vorgaben hat, mit welchen Mitteln er die Quersumme berechnen soll.

Zu dem Problem, das Programm ist doch schon so gut wie fertig. Die Berechnung der einzelnen Summanden findet schon statt, jetzt musst du (freshes) nur noch die Summe der einzelnen Werte, die deine Variabe su während des Schleifendurchlaufes annimmt, berechnen.

Nach der Schleife die Summe noch ausgeben lassen, und deine Aufgabe ist so gut wie erfüllt.

Die Multiplikation mit -1 bei eventuellen negativen Eingaben ist dazu gedacht, aus den negativen Zahlen eine positive Zahl zu machen. Du solltest also noch vor deiner ganzen Berechnung prüfen, ob die Zahl, aus der du die Quersumme berechnen sollst, negativ ist und wenn ja, diese mit -1 multiplizieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du must nur noch die Summanden addieren.


class A1B3

{

public static void main( String args[] ) {

[INDENT]int q = 1543;

int su = 0;

[b]int quersumme = 0;[/b]

int m = 10;

System.out.println("Quersumme");

[INDENT]while (q >= 1) { 

su = q%m;

[b]quersumme += su;[/b]

System.out.println(q + "%" + m + "=" + su);

q = q/m;


System.out.println("Ende der Berechnung");

}[/INDENT]


}

[/INDENT]}


Link zu diesem Kommentar
Auf anderen Seiten teilen

danke für die hilfe!

ich nehme an für die Multiplikation von (-1) brauche ich eine if-Anweisung, aber wo soll die hin?

Richtig. Da du die Multiplikation benutzen willst, damit du nur aus natürlichen Zahlen die Quersumme errechnest, sollte die Überprüfung und eventuelle Multiplikation auch vor deine gesamte Berechnung kommen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...