Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Arrays symmetrisch oder nicht? (http://www.informatikerboard.de/board/thread.php?threadid=1333)


Geschrieben von InFlames am 27.11.2012 um 19:56:

  Arrays symmetrisch oder nicht?

Hey Leute!

Ich bin neu hier & weiß nicht ganz ob meine Frage genau hier reingehört, aber ich probier's einfach mal smile

Leider bin ich absolut kein Informatikgenie traurig Aber da ich für eine Prüfung büffeln muss, muss das iwie in meinen Kopf. Hier eine Aufgabe die ich nicht ganz verstehe:

Ein Abschnitt eines Arrays wird beschrieben durch den ersten Index und den letzten Index. Er ist symmetrisch, wenn das erste Element des Abschnitts gleich dem letzten ist, das zweite gleich dem vorletzten usw.

Erstellen Sie eine Funktion die überprüft, ob ein Abschnitt eines Arrays symmetrisch ist oder nicht. Die Funktion soll true bzw. false zurückgeben.

Bsp.:

isSymm(array(1,2,3,4)) -> false

Wie sieht der Lösungsweg aus? Keine Angst, ihr sollt nicht meine Hausaufgaben machen Augenzwinkern Ich bin Studentin und brauche einfach ein wenig Hilfe um durch diese miese Prüfung zu kommen großes Grinsen

Über Hilfe bin ich dankbar! smile

Liebe Grüße Wink



Geschrieben von Karlito am 27.11.2012 um 20:22:

 

Hallo,

ich denke das lässt sich am einfachsten bewerkstelligen, indem du in einer Schleife über das array gehst.

Du übergibst der Funktion ja das Array, wie du es geschrieben hast. Dann prüfst du in der Schleife ob die Bedingung zutrifft.

Versuche mal bitte einen Ansatz zu posten, und bitte schreibe dazu, welche Sprache benutzt wird.

VG,

Karlito



Geschrieben von Björn am 01.06.2015 um 08:39:

 

Ich klinke mich hier mal mit ein, denn genau die gleiche Aufgabe habe ich auch :-)

Mein Lösungsansatz funktioniert aber nicht ganz wie ich es gerne hätte:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:

package javaissymmetrie;

public class JavaisSymmetrie 
{
    public static void main(String[] args) 
    {
        int [] array = {1,2,3,3,2,1}; 
        System.out.println(isSymmetrie(array));
    }
    
    public static boolean isSymmetrie (int [] array)
    {
        int laenge = array.length;
        int counter = 0; 
        for (int i=0; i<array.length;i++)
        {
            if (array[i]==array[laenge-1])
            {
                ++counter;
            }
        --laenge; 
        }
       return counter==laenge?true:false;  
    }

}



Vielen Dank für etwailige Vorschläge :-)



Geschrieben von Björn am 01.06.2015 um 11:47:

 

Hab meinen Fehler gefunden, so müsste es stimmen :-)

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
package javaissymmetrie;

public class JavaisSymmetrie 
{
    public static void main(String[] args) 
    {
        int [] array = {3,4,1,5,1,3,3}; 
        System.out.println(isSymmetrie(array));
    }
    
    public static boolean isSymmetrie (int [] array)
    {
        int laenge = array.length;
        int counter = 0; 
        for (int i=0; i<array.length/2;i++)
        {
            if (array[i]==array[laenge-1])
            {
                ++counter; 
            }
            --laenge; 
        }
       return counter==array.length/2?true:false; 
    }
}




Geschrieben von eulerscheZahl am 01.06.2015 um 15:56:

 

Wenn du in der Schleife counter erhöhst und von laenge 1 abziehst, ist laenge am Ende 0.

Zitat:
return counter==array.length/2?true:false;

oder auch return counter==array.length/2; smile

Etwas kompakter:
code:
1:
2:
3:
4:
5:
6:
7:
8:
public static boolean isSymmetrie(int[] array) {
	int l = array.length;
	for (int i = 0; i < l / 2; i++) {
		if (array[i] != array[l - 1 - i])
			return false;
	}
	return true;
}



Geschrieben von Björn am 04.06.2015 um 19:21:

 

Vielen Dank für deine Antwort :-)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH