Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

palindrome
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> palindrome
 
Autor Nachricht
zed21x
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 30.08.2010
Beiträge: 28

BeitragVerfasst am: 13 Nov 2010 - 16:11:59    Titel: palindrome

Hey ich will überprüfen ob eine zeichen folge ein Palindrom ist.

Code:
public static boolean palcheck(char[] feld)
    {
        boolean check=true;
        int n =feld.length;
        char merker=0;
    for(int i=0;i<n;i++)
    {
         merker=feld[i];
         
            for(int j=n;j>0;j--)
             
              if(merker!=feld[j-1])
             
              return false;
             
               
             
             
             
            }
   
    return true;
    }


Also meine Idee war jetzt das ich einmal das Feld von vorne zähle und einmal das Feld von hinten und jeweils die beiden vergleiche, aber klappt irendwie noch nicht sorichtig Smile. Weiss in moment nicht weiter.[/quote]
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 13 Nov 2010 - 16:25:10    Titel:

Du hast zwei verschachtelte Schleifen. Das heißt, bei Element "von vorne" prüfst du gleichzeitig irgendwie alle anderen Elemente.

Die Idee an sich ist aber gut, nur musst du das mit einer Schleife (die nur bis zur Mitte des Worts laufen muss) lösen.


Ach ja, noch ein Tipp für Tests: Denk dran, dass Palindrome ne gerade oder ne ungerade Länge haben können und sich dabei prinzipiell unterscheiden!
zed21x
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 30.08.2010
Beiträge: 28

BeitragVerfasst am: 13 Nov 2010 - 16:57:48    Titel:

ok das ist ja nicht so das Problem, weil dann würde ich doch einfach


Code:
for(int i=0;i<(n/2);i++)


schreiben.

Aber ich hab mir das jetzt mal in debug modus angeguckt und irgendwie bleibt man immer in der 2ten schleifen hängen und prüft dann solange bist ein es ungleich ist.

Also wenn ich zum Beispiel eingebe aabbaa prüft er nur das a.

a=a a=a und dann a=b. Also irgendwie springt er nicht zurück in die erste schleife und i erhöht sich somit nicht.

Ich hoffe das war jetzt verständlich^^
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 13 Nov 2010 - 19:54:32    Titel:

Wie gesagt: Die zweite Schleife ist da nicht hilfreich, die richtige Lösung benutzt nur eine, mit der du dann über passende Indizierung gleichzeitig von vorne und von hinten auf die Elemente zugreifst.

Falls du dir das noch nicht vorstellen kannst, versuch mal folgende Aufgabe: Versuche, die Elemente des Arrays a von hinten auszugeben, also das letzte zuerst. Dabei musst du zwingend folgenden Codeabschnitt verwenden:

Code:

for(int i = 0; i < a.length; i++) {
 System.out.println(a[???]);
}


Du darfst nur die Fragezeichen durch beliebigen Code ersetzen. Was tust du?
zed21x
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 30.08.2010
Beiträge: 28

BeitragVerfasst am: 13 Nov 2010 - 21:17:14    Titel:

Ja an das letzte element in einen arry kommt ja durch

Code:
 a.length-1


also würde ich hier jetzt sagen das man

Code:
 a.length-(i+1)
eingeben muss
zed21x
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 30.08.2010
Beiträge: 28

BeitragVerfasst am: 13 Nov 2010 - 21:42:09    Titel:

achja und so ist das natürlich ganz einfach.

Code:
  public static boolean palcheck(char[] feld)
    {
        boolean check=true;
        int n =feld.length;
        char merker=0;
    for(int i=0;i<(n/2);i++)
    {
         if (feld[i]!=feld[n-(i+1)])
         
           
             
              return false  ;
        }
       
    return true;
   
}


Klappt jetzt auch Smile Danke!
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2657

BeitragVerfasst am: 13 Nov 2010 - 22:10:09    Titel:

Smile

Und klappts auch für Palindrome ungerader Länge? (Warum könnte das theoretisch ein Problem darstellen?)
zed21x
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 30.08.2010
Beiträge: 28

BeitragVerfasst am: 14 Nov 2010 - 01:00:41    Titel:

Also hab es mal ausprobiert und es klappt auch mit ungeraden Smile

Keine ahnug also wo ein Problem jetzt sein könnte.

Ist auch zu spät jetzt darüber nachzudenken Very Happy
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> palindrome
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum