Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
14.03.13, 10:01
|
#1
|
Anfänger
Join Date: Jan 2011
Posts: 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
Join Date: Nov 2009
Posts: 216
Thanked: 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
Join Date: Oct 2010
Posts: 296
Thanked: 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
Join Date: Nov 2012
Posts: 27
Thanked: 16
|
int count = StringUtils.countMatches("1234", "1");
Jetzt musst Dich nur noch a' bisserl anstrengen
|
|
|
14.03.13, 18:53
|
#5
|
Hinter dir!
Join Date: Apr 2010
Posts: 1,124
Thanked: 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
Join Date: Oct 2009
Posts: 639
Thanked: 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
Join Date: Aug 2012
Posts: 223
Thanked: 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
Join Date: Jan 2011
Posts: 10
Bedankt: 49
|
Quote:
Originally Posted by 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!
Join Date: Apr 2010
Posts: 1,124
Thanked: 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.
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT +1. The time now is 20:15.
().
|