myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   Zahlen Unterscheiden (https://mygully.com/showthread.php?t=2868605)

ilikecookies 14.03.13 10:01

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.

waldfee0071 14.03.13 11:20

Was hast du denn schon versucht? Wenn du da nischt eigenes machst wird dir wohl kaum einer die Lösung geben.

Quabla 14.03.13 12:27

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.

baldurgarda 14.03.13 16:18

int count = StringUtils.countMatches("1234", "1");

Jetzt musst Dich nur noch a' bisserl anstrengen ;)

Your_Conscience 14.03.13 18:53

@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.

slahn 14.03.13 20:04

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:

NetWebs 14.03.13 20:54

@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

ilikecookies 14.03.13 21:25

Zitat:

Zitat von waldfee0071 (Beitrag 24378048)
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.

Your_Conscience 14.03.13 21:56

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.