Autor Beitrag
roym
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 17.01.06 15:15 
Ich muss für die Schule ein Programm erstellen, dass Palindrome erkennen soll(Großbuchstaben sollen nicht relevant sein) und kann den Ansatz irgendwie nicht finden(besser gesagt, ich habe keinen blassen Schimmer, wie das gehen soll :D ). Bin für jede Anregung dankbar.

P.S. Palindrome sind Wörter/Sätze, die von vorne und von hinten gelesen, das gleiche ergeben, also z.B. Anna oder Reliefpfeiler.
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Di 17.01.06 15:19 
um die Nichtrelevanz von Groß/kleinschreibung um zu setzen forsche mal nach Uppercase bzw. Lowercase.
Wörter sind jeweils zwischen 2 Leerzeichen.
Was sind eigentlich deine bisherigen Ansätze zur Lösung?
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 17.01.06 15:25 
Du nimmst einfach das Wort in eine Variable :
ausblenden Delphi-Quelltext
1:
OriginalWort := edit1.text;					

Dann drehst du das Wort um :
ausblenden Delphi-Quelltext
1:
UmgekehrtWort := Drehe(OriginalWort);					

Dann vergleichst du die beiden Wörter :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var Palindrom : Bool;
//(...)
Palindrom := OriginalWort = UmgekehrtWort;
//Stimmen beide Wörter überein ist Palindrom = True


So, was du nur machen musst, ist die Funktion "Drehe" zu Programmieren.
Folgende Hilfsmittel seien dir gegeben :
- Schleifen
- String-Operatoren ( Length(),Pos() )

Fang erstmal an, wenn du dabei Probleme hast medl dich nochmal.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 17.01.06 15:27 
user profile iconazubi_20 hat folgendes geschrieben:

So, was du nur machen musst, ist die Funktion "Drehe" zu Programmieren.
Folgende Hilfsmittel seien dir gegeben :
- Schleifen
- String-Operatoren ( Length(),Pos() )

Noch ein Tipp: Pos() wird nicht benötigt, aber dafür, wie man an ein einzelnes Zeichen des Strings rankommt. Weiterhin müsstest du noch wissen, das es
- einen leeren String gibt
- man an einen String einen anderen String, oder ein einzelnes Zeichen ranhängen kann. Das Ergebnis ist wieder ein String.

Mehr Hilfe gibts nu aber echt nich :wink:

_________________
Na denn, dann. Bis dann, denn.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 17.01.06 15:34 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function palindrom_iterativ(s: string): boolean;
var i: integer;
begin
  result := true;
  if (length(s) < 2then
    result := true else
  for i := 1 to length(s) div 2 do
    if s[i] <> s[length(s)-i+1then
      result := false;
end;

function palindrom_recursiv(s: string): boolean;
begin
  if length(s) < 2 then
    result := true else
    result := palindrom_recursiv(copy(s,2,length(s)-2)) and (s[1] = s[length(s)]);
end;

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Di 17.01.06 15:53 
Eigentlich hatte ich ja nicht vor etwas zu sagen. Aber ich denke das es nötig ist.

uall@ogc: Findest du nicht, dass eine rekursive Methode für so etwas wie eine Bazooka für ganz ganz kleine Spatzen wäre? Also ich finde das schon. Zum Üben mag das ja durchaus noch genehm sein. Wobei man Rekusionen anders sicher besser üben kann.

azubi_20: Du meinst für Drehe sicherlich die Methode ReverseString. Da muss man sich dann auch nichts Neues mehr einfallen lassen. Das gibts nämlich alles schon.

Das Einfachste wäre wohl folgendes.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if UpperCase(Edit1.Text) = UpperCase(ReverseString(Edit1.Text)) then
  ShowMessage('Palindrom')
else
  ShowMessage('kein Palindrom');

Wenn man sich durchaus etwas arbeit leisten möchte, dann kann man es auch iterativ machen wie es in der ersten Methode von uall gemacht wurde. Dabei aber aufpassen, dass der Text entweder mit UpperCase oder mit LowerCase transformiert wurde bevor er an die Methode übergeben wird.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 17.01.06 16:05 
Lossey eX:

Das ist ein Beispiel was man oft in der Informatik macht wenn es um Sprachen/Grammtik geht bzw um Rekursion. Da ich genau das in der Schule (& Studium) gemacht habe/machen muss, wäre es kein Wunder wenn der Lehrer genau danach fragen würde. Das sind eigentlich Grundlagen die man in der Schule lernen sollte.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 17.01.06 16:18 
Zitat:
Du meinst für Drehe sicherlich die Methode ReverseString.

Naja, eigentlich dachte ich eher daran diese Funktion selber zu programmieren.
So in etwa :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Function TForm1.Drehe(var Original:String):String;
var i: Integer;
begin
Result :='';
for I := length(Original) downto 1 do
  begin
  result := result + Original[i];
  end;
end;


Zitat:
Das Einfachste wäre wohl folgendes.

Ich glaube nicht, dass das im Sinne des Lehres ist.


Zitat:
Das sind eigentlich Grundlagen die man in der Schule lernen sollte.

Leider nicht (jedenfalls meine Erfahrung)
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Di 17.01.06 16:25 
uall@ogc: Also ich hatte dann wohl einen wesentlich praxisorientierteren Lehrer. Rekursion hatte ich nicht mit so einem Beispiel. Und da brauchen wir glaube ich auch beide nicht drüber reden, dass dabei Rekursion vollkommen fehl am Platze ist. Ich bin der Meinung, dass man Rekursion so auch nicht beibringen sollte. Da bekommt man nur einen völlig falschen Eindruck von deren Leistungsfähigkeit. Aber egal. Das gehört hier eigentlich auch nicht hin.

azubi_20 hat folgendes geschrieben:
Ich glaube nicht, dass das im Sinne des Lehres ist.

Wieso? Der Lehrer hat laut Tilo gesagt "ein Program was Palindrome erkennt". Er hat aber nicht gesagt was und wie es gemacht werden soll. Das ist Aufgabe des Entwicklers. Es führen schließlich viele Wege nach Rom. Um mal ein paar Sprichwörter zu klopfen.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: Di 17.01.06 16:37 
user profile iconLossy eX hat folgendes geschrieben:
Wieso?

Also meiner Erfahrung nach geht es in der Schule erstmal um das Verständnis von Algorithmen.
Ich musste damals auch Sortierfunktionen u.ä. schreiben, die es schon fix und fertig gibt.
Meiner Meinung nach ist das auch garnicht schlecht, wenn man zu Anfang erstmal grundsätzlich versteht, was da eigentlich dahintersteckt. Und da der Treadersteller das offenbar erst lernt, sollte er ruhig etwas "selbst" programmieren. Ist halt die Sache, das es zu jedem "kleinen" Problem schon fertige Funktionen gibt. Aber man muss nun mal klein anfangen...
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.01.06 16:40 
user profile iconuall@ogc hat folgendes geschrieben:
Lossey eX:

Das ist ein Beispiel was man oft in der Informatik macht wenn es um Sprachen/Grammtik geht bzw um Rekursion. Da ich genau das in der Schule (& Studium) gemacht habe/machen muss, wäre es kein Wunder wenn der Lehrer genau danach fragen würde. Das sind eigentlich Grundlagen die man in der Schule lernen sollte.

ich wäre froh, wenn wir sowas in der schule lernen würden OO
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 17.01.06 16:43 
Ich wäre froh, wenn derartige Inhalte den IT-Azubis an den Schulen vermitteln würden... Bei jeder Prüfung der selbe graus...

_________________
Bravery calls my name in the sound of the wind in the night...
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Di 17.01.06 16:58 
Vielleicht muss ich noch bisl was dazu sagen.
Wir waren im Informatik Kurs nur 6 Leute, aufgrund der Anzahl wars kein LK sondern nur GK da es zu wenig Lehrer gab und somit für 8 Leute einen Bio LK gab. Aber der Lehrer wußte das und hat deshalb den GK duchgezogen wie nen LK.

Normalerweise macht man sowas wie Algorithmen und datenstrukturen (Sortier/Suchalgs. Bubblesort, Selectionsort, Insertionsort, Quicksort Mergesort, Heapsort, AVl-Bäume) und auch Rekrusion (Fibonacci, n!). Es gibt da eben den schönen Übergang zu Sprachen und Grammatik. Den n! muss man auch nicht rekursiv (iterativ, rek endständig bla bla) darstellen weils genauso sinnlos ist wie vill Palindrome. Aber Palindrome sind DAS Beispiel was auf jedenfall in der Grammatik gemacht wird. Und eben von der Rekursion (was als letztes von Algs gmacht wird) und Sprachen kann man es gut nehmen.
Deshalb würde mich das nicht wunder, das er es jetzt implementieren muss, wenn danach Sprachen drankomment. Und Mathematische Ausdrücke lösen, (Sprachen/Grammatik) ist auch z.b. sehr Rekursiv (abarbeiten von Teiltermen '(')

wer kennt da nicht noch sowas von

Term -> '(' Term ')'

oder eben Palindrome

S-> A
A -> aAa, bAb, cAc, a, b, c

Jedenfalls musste ich es auch rekursiv programmieren, aber da die meisten Lehrer eh keinen Plan davon haben wunders mich auch nicht, dass es die meisten net lernen.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 17.01.06 17:01 
hmpf wäre froh wenn ich 8 leute für mathe lk zusammenkratzen könnte, an informatik ist da nichtmal dran zu denken. frag mich, warum alle so scharf auf bio lk sind, dabei kenne ich niemanden, der bio so wirklich mag.
noidic
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 851

Win 2000 Win XP Vista
D7 Ent, SharpDevelop 2.2
BeitragVerfasst: Di 17.01.06 17:05 
Etwas, was ich auch nur im entferntesten als Algorithmus bezeichnen möchte, wurde mir weder im Gymnasium ( Info-GK ) noch in der Berufschule ( hab FI Anwendungsentwicklung gelernt ) auch nur Ansatzweise zu vermitteln versucht...

_________________
Bravery calls my name in the sound of the wind in the night...
roym Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 17.01.06 18:55 
Erst mal danke für eure zahlreiche Hilfe(auch wenn hier momentan mehr über für das Thema weniger relevante Dinge diskutiert wird :wink: , aber ein paar sehr brauchbare Lösungsansätze waren schon dabei).
Wisst ihr, ich bin ein ziemlicher Anfänger(1x pro Woche Delphi seit einem Jahr, aber der Lehrer ist ziemlich schlecht im Erklären)und ob einfach oder schwer, Hauptsache ich kriege es irgendwie hin und ich denke, der Lehrer wird da keine Einwände haben.
Tilo
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1098
Erhaltene Danke: 13

Win7 geg. WInXP oder sogar Win98
Rad2007
BeitragVerfasst: Mi 18.01.06 10:34 
user profile iconLossy eX hat folgendes geschrieben:
Der Lehrer hat laut Tilo gesagt "ein Program was Palindrome erkennt".

Kleiner Fehler: user profile iconroym hat das Problem!