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 angewiesen 😕

    Hier 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.


Anmelden zum Antworten