Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » C-Programm zum Erkennen von Palindromen
Druckversion
Druckversion
Antworten
Antworten
Autor
Universität/Hochschule C-Programm zum Erkennen von Palindromen
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-11-24




Brauche Hilfe zum lösen dieser Aufgabe. Habe leider keine Ahnung wie ich anfangen soll bin komplett überfordert. Kann mir jemand auf die Sprünge helfen? Wie bekomme ich die Länge eines C Arrays? Und welche Schleife werde ich benötigen?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2622
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-11-24


C-Strings sind "\0"-terminiert.
Um die Länge herauszufinden iteriert man über den String, bis man den 0-Charakter findet.

Für die eigentliche Funktion kann man sehr verschiedene Implementierungen versuchen.
Will man mit Schleifen arbeiten, bietet sich die for-Schleife an.
Mit while geht es natürlich auch (for ist ja nur ein Spezialfall von while) und statt Schleifen könnte man natürlich auch mit Rekursion arbeiten.

Weiterhin könnte man einen Stack nutzen und benötigt dann keine Längeninformationen. (Implementierungsübung für fortgeschrittene Anfänger)


Tipp: Beachte die kleine Falle der Groß-/Kleinschreibung und überlege, wie man das lösen könnte.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-11-24


while (word[length] != '\0')
{
length++;
}
printf("%d", length);

Habe jetzt die Länge ermitteln können. Danke.
Jedoch habe ich keinerlei Ideen wie denn die for Schleife aussehen könnte?

mit for(int i = 0; i < length; i++)
würde man ja von die Anzahl der Buchstaben durchgehen. Ist das ein richtiger Ansatz? Was passiert in der for ?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2622
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2020-11-24


Für ein Palindrom müssen das erste und das letzte Zeichen, das zweite und das vorletzte Zeichen usw. identisch sein.
Das gilt es zu überprüfen.

Zum Schluss sollte man noch das Problem der Groß-/Kleinschreibung beheben.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2020-11-24


Von der Theorie verstehe ichs, schaffe es nicht in einer
For-schleife auszudrücken. Kann mir jemand ein Beispiel einer For-schleife geben damit ich es verstehen kann.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 1778
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2020-11-24


2020-11-24 18:47 - HartlPet in Beitrag No. 4 schreibt:
Kann mir jemand ein Beispiel einer For-schleife geben damit ich es verstehen kann.

Hier mal ein Beispiel einer for-Schleife, die die Buchstaben, die du vergleichen musst, ausgibt, aber sonst noch nichts Sinnvolles macht:
C
#include <stdio.h>
 
int main(void) {
  char word[] = "Legovogel";
  int length;
  int i, j;
 
  for (length = 0; word[length]; ++length);
 
  for (i = 0; j = length - i - 1, i < j; ++i)
    printf("%c =?= %c\n", word[i], word[j]);
 
  return 0;
}



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2020-11-24


Das Gibt mir L =?= l
e =?= e
g =?= g
o =?= o

aus. Hilft mir nicht weiter verwirrt mich nur mehr... Warum gibt er nur 4 Buchstaben aus? Was ist =?=



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.7, vom Themenstarter, eingetragen 2020-11-24


Hab das Programm leicht verändert und jetzt siehts gut aus, einzig den letzten Buchstaben gibt er mir nicht aus.




Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 1778
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.8, eingetragen 2020-11-24


2020-11-24 22:04 - HartlPet in Beitrag No. 6 schreibt:
Warum gibt er nur 4 Buchstaben aus?

Du musst ja nur prüfen, bis du in der Mitte angekommen bist.

Also für "Legovogel":
1. Buchstabe = letzter Buchstabe?
2. Buchstabe = vorletzter Buchstabe?
3. Buchstabe = drittletzter Buchstabe?
4. Buchstabe = viertletzter Buchstabe?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet
Junior Letzter Besuch: im letzten Quartal
Dabei seit: 24.11.2020
Mitteilungen: 16
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.9, vom Themenstarter, eingetragen 2020-11-24


Das Wort ist aber 9 Buchstaben lang? Was ist mit v? V könnte sich unterscheiden



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 1778
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.10, eingetragen 2020-11-24


2020-11-24 22:24 - HartlPet in Beitrag No. 9 schreibt:
Das Wort ist aber 9 Buchstaben lang? Was ist mit v? V könnte sich unterscheiden

Wovon sollte es sich unterscheiden? Du würdest doch dieses "v" mit sich selbst vergleichen.

Allgemein kann man festhalten: Wenn $i$ der Index des linken Zeichens und $j$ der des rechten ist, dann ist ein Vergleich nur sinnvoll, solange $i<j$ ist.

Ganz unabhängig von diesem Punkt gibt es ein weiteres Problem: Im Augenblick "vergisst" du mit jedem Vergleich das Ergebnis der vorherigen Vergleiche, was natürlich nicht funktionieren kann.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
HartlPet hat die Antworten auf ihre/seine Frage gesehen.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]