Anagramme.exe funktioniert nicht mehr
-
Hallo Leute, ich habe ein großes Problem. Ich muss ein Programm schreiben, mit dem man 2 Wörter oder Sätze einlesen kann, das dann testet ob es sich dabei um ein Anagramm handelt. Das Programm zeigt 0 Fehler und 0 Warnungen an, aber nach dem Einlesen des ersten Wortes kommt "Anagramme.exe funktioniert nicht mehr.
Ich kann den Fehler nicht finden und bin auf eure Hilfe angewiesenHier ist das Programm
#include <stdio.h> //Einfügen wegen der tolower-fkt. #include <ctype.h> //Funktion zum Zeichen zählen void HaeufigkeitBestimmen (char *Zeichenfolge, int *Haeufigkeit) { int *Zeiger = NULL; int Wert; char *Zeiger2 = NULL; char Zeichen; //"Zeiger" wandert rückwärts durch das Array und schreibt den Wert 0 rein for (*Zeiger=*(Haeufigkeit+255); Zeiger>=Haeufigkeit; Zeiger--) *Zeiger=0; //Variable v ist der Index der Zeichenfolge, gehe so lange durch die Folge durch, bis das "Ende-Zeichen" kommt for (*Zeiger2=*(Zeichenfolge); *Zeiger2!=0 && *Zeiger2!='\n'; Zeiger2++) { // hier wird alles zu kleinbuchstaben Zeichen=tolower(*Zeiger2); // Sonderzeichen, Satzzeichen etc müssen ignoriert werden if (Zeichen>='a' && Zeichen <='z') { //um negativen Werten vorzubeugen, müssen die Character umgewandelt werden // Wert ist ein int, aber entspricht einem Buchstaben Wert=((short)Zeichen) & 0xFF; //Jeden Wert, also jedes Zeichen zählen. Bzw. bei vorhandenen Zeichen den Zähler um 1 erhöhen Haeufigkeit[Wert] ++; } } } int ArraysVergleichen (int *Haeufigkeit1, int *Haeufigkeit2, int Laenge) { int AnzahlAbweichungen=0; int *p1 = NULL; int *p2 = NULL; for (*p1=Haeufigkeit1+(Laenge-1), *p2=Haeufigkeit2+(Laenge-1); p1>=Haeufigkeit1; p1--, p2--) { if (*p1!=*p2) AnzahlAbweichungen++; } return AnzahlAbweichungen; } //Beginn des Hauptprogramms int main (void) { //Variablen deklarien und initialisieren char Zeichenfolge1[257], Zeichenfolge2[257]; //Array für die Häufigkeiten, 256 Stellen, da jeweils die ASCII-Werte verwendet werden int Haeufigkeit1[256], Haeufigkeit2[256], Abweichung=0; printf("*** Dieses Programm erkennt, ob zwei von ihnen eingegebene Wörter, Sätze oder Satzteile Anagramme sind ***"); printf("\n Geben sie den ersten Satz oder das erste Wort ein:"); //Einlesen des ganzen Strings mit fgets, damit es auf 256 Zeichen beschränkt wird fgets (Zeichenfolge1, 256, stdin); //Null-Byte am Ende für den Notfall, dass wirklich 256 Zeichen eingegeben werden Zeichenfolge1[256]='\0'; HaeufigkeitBestimmen(Zeichenfolge1, Haeufigkeit1); //2.Zeichenfolge printf("\n Geben sie den zweiten Satz oder das zweite Wort ein:"); fgets (Zeichenfolge2, 256, stdin); Zeichenfolge2[256]='\0'; //fkt zum Verlgeichen aufrufen und die ANzahl der Abweichungen wird zurückgegeben HaeufigkeitBestimmen(Zeichenfolge2, Haeufigkeit2); //Auswertung und AUsgabe des Ergebnisses Abweichung=ArraysVergleichen(Haeufigkeit1, Haeufigkeit2, 256); if (Abweichung==0) printf("\n Bei den eingegebenen Buchstabenreihen handelt es sich um ein Anagramm."); else printf("\n Bei den eingegebenen Buchstabenreihen handelt es sich nicht um ein Anagramm."); return 0; }
//Code tags
-
Da gibt es einige Punkte, die du beachten solltest:
- Falsches Forum -> C
- Bitte Quellcode in [cpp]Code-Tags[/cpp] einschliessen
- Konkretere Fragen stellen und Eigeninitiative zeigen, anstatt "funktioniert nicht - hier ist der Code"
- Debuggen oder mindestens schrittweise ausführen, Variablen prüfen und durch Auskommentieren den Fehler einschränken
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.