Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
14.03.13, 10:01
|
#1
|
Anfänger
Registriert seit: Jan 2011
Beiträge: 10
Bedankt: 49
|
Zahlen Unterscheiden
Kann mir jemand helfen bei der folgenden Aufgabe : Schreiben Sie ein Programm (GUI), welches entscheidet, ob eine eingegebene Zahl komplett aus unterschiedlichen Ziffern besteht.
Beispiel:
123 - Ja
1987 - Ja
2012 - Nein
234897 - Ja
Ich benutze Java.
Ich bräuchte nur den Quellcode für den jbutton.
|
|
|
14.03.13, 11:20
|
#2
|
Ist öfter hier
Registriert seit: Nov 2009
Beiträge: 219
Bedankt: 189
|
Was hast du denn schon versucht? Wenn du da nischt eigenes machst wird dir wohl kaum einer die Lösung geben.
|
|
|
14.03.13, 12:27
|
#3
|
Mitglied
Registriert seit: Oct 2010
Beiträge: 296
Bedankt: 151
|
also ich kann zwar kein java sondern c++ aber ich würde die zahl in einen string oder ein char array umwandeln und dann die elemente durch iterieren und speichern, ob die jeweilige ziffer schon vorkam (10 bool variablen). sobald eine vorkommende ziffer schon auf true steht, kannst du false zurückgeben, wenn die schleife komplett durchläuft, gibst du true zurück. zusätzlich kannst du immer false zurückgeben, wenn eine zahl mehr als 10 stellen hat.
|
|
|
14.03.13, 16:18
|
#4
|
Anfänger
Registriert seit: Nov 2012
Beiträge: 27
Bedankt: 16
|
int count = StringUtils.countMatches("1234", "1");
Jetzt musst Dich nur noch a' bisserl anstrengen
|
|
|
14.03.13, 18:53
|
#5
|
Hinter dir!
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
|
@KanuKkidz
Man muss sich ersteinmal ein Algorithmisches Grundverständnis aneignen, jemanden wegen soetwas zu raten das Studienfach zu wechseln hat weder Hand noch Fuß.
Außerdem werden seinen Kommilitonen von ihm nicht augehalten, egal wie schlecht er ist.
|
|
|
14.03.13, 20:04
|
#6
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
Also ich würde alles in ein Array packen und dann einfach in einer Doppelschleife jedes Element mit mit jedem anderen vergleichen. Das ergibt dann n-1 Durchläufe, wobei jeder Durchlauf n-1 - [Nr. des aktuellen Durchlaufs] Vergleiche benötigt. Das wäre also in Summe n(n-1)/2 ... bei den Ziffern von 0 bis 9 also 45 Durchläufe ...
Pseudocode:
|
|
|
14.03.13, 20:54
|
#7
|
Banned
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
|
@slahn
Das wär die brutal schlechteste Lösung. 45 Durchläufe, wenn man maximal 9 Stellen vergleichen muss?
Richtig:
Durchlauf alle Ziffern, zähle die jeweilige Ziffer auf. Abbruchbedingung: eine Aufzählung ist größer als 1.
Max. Durchlauf = 9
|
|
|
14.03.13, 21:25
|
#8
|
Anfänger
Registriert seit: Jan 2011
Beiträge: 10
Bedankt: 49
|
Zitat:
Zitat von waldfee0071
Was hast du denn schon versucht? Wenn du da nischt eigenes machst wird dir wohl kaum einer die Lösung geben.
|
Klar hab ich es versucht, habs mit equals versucht, jedoch scheitert mein kleines "programm", die erste Zahl ist komischer weise immer true doch die darauf folgenden sind dann false.
Und noch was ich bin noch ein stück entfernt vom Studium, bin noch in der Oberschule.
|
|
|
14.03.13, 21:56
|
#9
|
Hinter dir!
Registriert seit: Apr 2010
Beiträge: 1.125
Bedankt: 487
|
Ich habe mal schnell eine Funktion geschrieben bevor es hier wieder ausartet:
Code:
static boolean allDigitsOfNumberAreUnique(int number) {
int cnt[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
String str = String.valueOf(number);
int digit;
for (int i = 0; i < str.length(); i++) {
digit = (int) (str.charAt(i) - '0');
if (cnt[digit] > 0) return false;
cnt[digit]++;
}
return true;
}
Aufruf:
Code:
int number = 12345;
if (allDigitsOfNumberAreUnique(number))
System.out.println("ja");
else
System.out.println("nein");
@ilikecookies
Poste bitte nächstes mal deinen Versuch mit der Fragestellung, dann wird dir auch eher geholfen.
Von Copy&Paste hat hier niemand etwas.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:32 Uhr.
().
|