Teiler Java

mtbrider

Mitglied
hey leutz,

ich raffe diese Aufgabe nicht. Ich bin eine große 0 in java deshalb hoffe ich ihr könnt mir helfen.

Aufgabe:

1)Lassen Sie alle Teiler einer einzulesenden ganzen Zahl ausgeben. Benutzen Sie auch hier eine Division mit ganzzahligem Ergebnis. Beispiel: 8 hat die Teiler 1,2,4,8.

"Teiler
Geben Sie eine Zahl ein: 63
63 ist durch:
1 3 7 9 21 63 teilbar.
Programmende Teiler."

2) Lassen Sie eine beliebige Anzahl von Zahlen addieren, bis die Zahl 0 eingegeben wird. Danach wird die Gesamtsumme und der Durchschnitt ausgegeben.


Ich hoffe das ihr mir helfen könnt, ich verstehe nichts =(
 

XHelp

Top Contributor
Wo genau ist denn die Frage?
"Benutzen Sie die Division mit ganzzahlingem Ergebnis" heißt wohl soviel wie:
8 div 4 = 2 : 2*4=8, also ist 4 ein Teiler von 8
8 div 5 = 1 : 5*1 != 8, also ist 5 kein Teiler von 8
 

Haave

Top Contributor
Hast du Verständnisschwierigkeiten auf der mathematischen Seite oder bei der Umsetzung in Java (Einlesen von Werten etc.)?


Naja, hier mal ein paar Sachen, zu denen du dir Gedanken machen solltest, um dich auf den richtigen Weg zu schubsen:

Zu 1:
Unter welchen Umständen ist eine Zahl glatt durch eine andere Zahl teilbar? Worauf musst du prüfen?

Zu 2:
Wie berechnet man den Durchschnitt einer Summe bei x Summanden?
 

Strahlungsleck

Aktives Mitglied
Nachdem bei Ihm eh die Aufgabe besprochen wurde hier mal meine Idee dazu ^^
nimmt Rücksich, bin seit gestern früh aufn Beinen und noch net so Javaerfahren ;)
 

Anhänge

  • summant.txt
    1,2 KB · Aufrufe: 15
  • teiler.txt
    1.017 Bytes · Aufrufe: 28
Zuletzt bearbeitet:

XHelp

Top Contributor
Ich habe es nur grob überflogen, deswegen kann ich mich auch täuschen, aber:
Teiler: Laut der Aufgabenstellung musste man die ganzzahlige Division und nicht Divisionsrest verwenden (siehe mein 1. Post)
Summand: wenn du gleich am Anfang eine 0 eingibst, bekommst du eine Division durch 0.
 

Strahlungsleck

Aktives Mitglied
Ich habe es nur grob überflogen, deswegen kann ich mich auch täuschen, aber:
Teiler: Laut der Aufgabenstellung musste man die ganzzahlige Division und nicht Divisionsrest verwenden (siehe mein 1. Post)
Summand: wenn du gleich am Anfang eine 0 eingibst, bekommst du eine Division durch 0.

zu Teiler: Also es ist doch so, alle Zahlen durch die die Eingegebene Zahl teilbar ist und das Ergebnis kein Rest hat bzw. eine Kommerzahl wird/ist. Um herauszufinden ob es bei der Division ein Rest gibt überprüfe ich alle Teiler von 1 bis zur eingegebenen
Zahl (kann man eleganter machen das er noch weniger abfragen muss und damit schneller ist/rechnet). Daher verstehe ich nicht,
wieso das nicht richtig sein soll.

zu Summand: Das weiß ich ja, habe ich aber nicht abgefangen, weil meines Erachten es schwachsinnig ist, eine 0 als erste Zahl einzugeben. Außer man will es wirklich auf jeden erdenklichen Fehler prüfen und abfangen lassen. Dann müsste man auch double, float und Strings als eingabe verhindern/abfangen usw. .....

Aber habs mal kurz geändert und ne If-Verzweigung eingebaut
Java:
package java.forum.hausaufgaben;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Summand {

	public static void main(String[] args) {

		// Variablen Deklaration
		int zahl = 1;
		int summe = 0;
		int sumanten = 0;

		// prüft vor dem schleifendurchlauf ob die eingegebene Zahl 0 ist.
		// Der Wert von Zahl wird überschrieben um ein falsches Ergebnis
		// auszuschließen
		while (zahl != 0) {
			System.out.println("Bitte Summanten eingeben: ");
			try {
				// Eingabe Dialog und parse
				BufferedReader input = new BufferedReader(
						new InputStreamReader(System.in));
				zahl = Integer.parseInt(input.readLine());

				// Summenbildung der eingabe
				summe = summe + zahl;
				// Verzweigung damit die 0 als Zahl nicht mitgezählt wird
				if (zahl != 0) {
					sumanten++;
				}

				// Fehlerbehandlung
			} catch (IOException ex) {
				System.out.println(ex.getMessage());
			}
		}
		// Ausgabe der Gesammtsumme und Durchschnittshöhe der Summanten
		if (sumanten == 0) {
			System.out.println("Erste eingegebene Zahl war eine 0! Daher kann keine Berechnung erfolgen");
		} else {
			System.out.println("Gesamtsumme: " + summe);
			summe = summe / sumanten;
			System.out.println("Durchschnitt der Summanten: " + summe);
		}
	}
}
 
Zuletzt bearbeitet:

XHelp

Top Contributor
zu Teiler: Also es ist doch so, alle Zahlen durch die die Eingegebene Zahl teilbar ist und das Ergebnis kein Rest hat bzw. eine Kommerzahl wird/ist. Um herauszufinden ob es bei der Division ein Rest gibt überprüfe ich alle Teiler von 1 bis zur eingegebenen
Zahl (kann man eleganter machen das er noch weniger abfragen muss und damit schneller ist/rechnet). Daher verstehe ich nicht, wieso das nicht richtig sein soll.
Weil es die Aufgabenstellung so besagt. Wenn in der Aufgabe steht: "Das Viereck muss rot sein" und man das Viereck grün macht, ist es falsch.
Es kann natürlich sein, dass ich zu viel in die Aufgabenstellung reininterpretiere, aber Divisionsrest und Division ohne Rest sind völlig verschiedene Sachen.
zu Summand: Das weiß ich ja, habe ich aber nicht abgefangen, weil meines Erachten es schwachsinnig ist, eine 0 als erste Zahl einzugeben. Außer man will es wirklich auf jeden erdenklichen Fehler prüfen und abfangen lassen. Dann müsste man auch double, float und Strings als eingabe verhindern/abfangen usw. .....
Also eine 0 am Anfang einzugeben, dass ist nicht "jeder erdenklicher Fehler", sondern der offensichliste.
 

Strahlungsleck

Aktives Mitglied
Weil es die Aufgabenstellung so besagt. Wenn in der Aufgabe steht: "Das Viereck muss rot sein" und man das Viereck grün macht, ist es falsch.
Es kann natürlich sein, dass ich zu viel in die Aufgabenstellung reininterpretiere, aber Divisionsrest und Division ohne Rest sind völlig verschiedene Sachen.

Also eine 0 am Anfang einzugeben, dass ist nicht "jeder erdenklicher Fehler", sondern der offensichliste.

zu 1) Achso, nun verstehe ich was du genau damit meinst, sorry stand da ein wenig aufn Schlauch und wollte dich nicht angreifen
wenn es so rüber gekommen ist. Also ich verstehe die Aufgabenstellung und die zwei Beispiele so:
1. Eingegebende Zahl muss ganzzahlig sein (Aufgabenstellung)
2. Das der Teiler ganzzahlig sein muss (Aufgabenstellung + Beispiel)
3. Das dass Ergebnis ganzzahlig sein muss (Aufgabenstellung)
4. Jede Zahl von 1 bis zur eingegebenden Zahl sollte als Teiler geprüft werden (Aufgabenstellung + Beispiele)
5. Es nur Teiler ausgegeben werden, die Ohne Rest ein ganzzahliges Ergebnis liefern


zu2) Jap, da hast du Recht. Ich sag ja nichts mehr dazu xD Aber sonst war das soweit richtig oder ?
 

XHelp

Top Contributor
Ne, keine Sorge, ich fühle mich nicht angegriffen. Wie gesagt, es kann ja auch gut sein, dass ich falsch liege.
Es geht mir um folgende Aussage:
Benutzen Sie auch hier eine Division mit ganzzahligem Ergebnis
Deine Methode ist zwar richtig, aber die funktioniert mit Divisionsrest. Laut der Aufgabenstellung muss man es aber mit ganzzaliger Division machen.
Und zu deinen Punkten:
Ein Teiler ist laut Definition schon eine ganze Zahl und liefert bei der Division wiederum eine ganze Zahl.

zu 2) es sieht funktionsfähig aus, falls du das meinst
 

Strahlungsleck

Aktives Mitglied
achso...

naja das beste wäre, wenn der TO mal das in der Schule besprochene (Musterlösung) postet
damit wir wissen was der Lehrer nun genau wollte
 

mtbrider

Mitglied
wupps sry :D hab die blätter hier mit den musterlösungen, hab se auch kopiert bloß man sieht daruf so gut wie nix weil die druckerschwärze sau schwach is, wollte die antwort da oben löschen ging aber net :D
 

mtbrider

Mitglied
public static void main(String args[])

{
int intN;
float flSumme=0;
Scanner eingabe = new scanner(System.in);
System.out.println("Berechnung der Summer der Reihe:");
System.out.println(" 1^2+2^2+3^2+...n^2");
System.out.print("Geben sie eine pos. ganze Zahl ein (N):");
intN = eingabe.nextInt();
for (int i=1 ; i<=intN; i++)
{
flSumme = flSumme+(i*i);
}
 

XHelp

Top Contributor
Naja... du hast 2 Aufgaben und kriegst als Musterlösung 1 einzelne Methode. Und deine Aufgaben sind über Teiler und Quersummen und die "Musterlösung" berechnet eine "Quadratsumme" einer Folge. Im Fachjargon heißt sowas glaube ich "Thema verfehlt - 6, setzen!"
 

Neue Themen


Oben