Brauche dringend Hilfe bei einem Programm! Thema: Strings, tolower, Anagramme



  • Hallo,

    brauch hilfe bei einem Programm, komme einfach nicht weiter.
    Zum einen darf ich eigetnlich ctype.h nicht verwenden, ich bräuchte also eine Definition der verwendeten tolower Funktion.
    Zum andern ist irgendwo ein Fehler drin, den ich partout nicht finden kann.
    Es geht um Anagramme. Das programm soll zwei Sätze einlesen und dann ausgeben, ob es ein Anagramm oder kein Anagramm ist.
    Leider erkennt er manchmal anagramme die keine sind, vorallem wenn ein paar buchstaben nur gleich sind.

    wäre um jede Hilfe dankbar! Ist sehr dringend!!

    vlg Elisa

    hier das programm:

    #include "stdafx.h"
    #include "string.h"
    #include "ctype.h"
    
    //Hauptprogramm
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char eins[256];
    	char zwei[256];
    	printf("Geben sie zwei Saetze ein:\n");
    	gets(eins);
    	gets(zwei);
      int count=0;
    	bool anagramm=true;
    	for(int i=0;i<256;i++){
    		for(int e=0;e<256;e++){
    			char x = *(eins+i);
    			char y = *(zwei+e);
    			if(tolower(x)==tolower(y)){
    				*(eins+i)='\t';
    				*(zwei+e)='\t';
    				count++;
    			}
    
    		}
    	}
    	//Ausgabe
    
    	if(count>=256){
    		printf("\nANAGRAMM!!\n");
    	}else{
    		printf("\nKEIN ANAGRAMM!\n");
    	}
    
    	return 0;
    }
    


  • Hi,

    fennalein schrieb:

    ...
    Zum einen darf ich eigetnlich ctype.h nicht verwenden, ich bräuchte also eine Definition der verwendeten tolower Funktion. ...

    Das klingt so, als wäre genau DAS Teil der Hausaufgabe. Und damit meine ich nicht, das Lernen von Internetrecherche, noch von Delegation, sondern von Implementierung.

    fennalein schrieb:

    ...
    Zum andern ist irgendwo ein Fehler drin, ...

    Wie kommst Du darauf?

    BTW: Mit den Forumsthema ("Standard C++") hat das Ganze so irgendwie gar nichts zu tun - es ist weder "C++" noch "Standard". :p 😉

    Gruß,

    Simon2.



  • Es geht um Anagramme. Das programm soll zwei Sätze einlesen und dann ausgeben, ob es ein Anagramm oder kein Anagramm ist.

    Man bestimmt die Buchstabenhaeufigkeit in Satz 1 und in Satz 2. Sind diese gleich, so handelt es sich um ein Anagramm. Steuerzeichen oder Whitespaces werden ignoriert. Was du in deinem Programm machst, ist mir schleierhaft. Jedenfalls brauche ich keine geschachtelte for-Schleife.

    PS: Und in C++ gibt es std::string's und sind meist den char-Arrays vorzuziehen. Die Beschraenkung auf eine feste Zeichenkettenlaenge wie 256 faellt dann weg.


Anmelden zum Antworten