Inhalt eines Arrays pruefen



  • Hallo,

    ich haette noch einmal ne Frage;
    ich beschreibe in meinem programm ein Array einer bestimmten Laenge in jedem feld mit 1 oder 0. Und im anschluss moechte ich wissen, ob in jedem Element des Arrays eine 1 steht oder ob sich die feldelemente noch unterscheiden.

    Wie kann ich das realisieren? ich steh gerade mal wieder bisschen auf dem schlauch

    Vielen Dank schonmal,

    Gruss Alex



  • stichworte: schleifen, vergleichsoperator.
    reicht das?



  • ja, na das ist mir soweit schon klar. nur komm ich gerade nicht so recht weiter, wie ich es genau realisiere



  • Hi
    Da du ja deinen Angaben nach die Werte in jedes Feld selbst schreibst, sollte das nicht so schwierig sein.
    Irgendwie sehe ich das Problem nicht. 😕



  • naja, ich muss dazu sagen. ich hab echte schwierigkeiten mich da rein zu denken.

    ich hab mich vorhin vielleicht etwas unguenstig ausgedrueckt. ich schreibe die werte mittels einer schleife hinein. und da abwechselnd 0 oder 1 reingeschrieben wird, soll er die schleife erst verlassen, wenn alles 1 ist.

    int suche2(char wort[25]){
    
    	char eingabe[2];
    	int gefunden=-1;
    	char buchstabe={0};
    	int i;
    	int x;
    	int anzBuchstaben=strlen(wort);
    	char trefferBuchstabe[25];
    	//wort!=eingabe
    
    	printf("Wort: %s\n", wort);
    	printf("anzBuchstaben: %d\n", anzBuchstaben);
    	printf("gefunden: %d\n", gefunden);
    
    	while (gefunden!=0)
    	{
    
    		printf("Buchstaben eingeben: "); 
    		fflush(stdin);
    		buchstabe=getchar();
    		printf("\n Buchstabe: %c\n", buchstabe);
    
    		for(i=0;i<anzBuchstaben;i++)
    		{
    			if(wort[i]==buchstabe) trefferBuchstabe[i]=1;
    			else trefferBuchstabe[i]=0;
    		}
    
    		for (x=0; x<anzBuchstaben; x++)
    		{
    			if (trefferBuchstabe[x]=trefferBuchstabe[x+1])
                                    gefunden=-1;
    			else
    				gefunden=0;
    		}
    
    	}
    
    return 0;
    }
    

    und ich haenge etwas an der zweiten for schleife, damit moechte ich die while schleife verlassen



  • Guckst du Kommentare.

    int suche2(char wort[25]){
    
      //  char eingabe[2];	wird nicht gebraucht
        int gefunden=-1;
        char buchstabe=0; // Es wird kein Array initialisiert, Klammern sind nicht nötig.
        int i;
        //int x; Das i genügt uns.
        int anzBuchstaben=strlen(wort);
    	char trefferBuchstabe[25]={0}; // Jedes Array-Element mit 0 initialisieren.
        //wort!=eingabe
    
        printf("Wort: %s\n", wort);
        printf("anzBuchstaben: %d\n", anzBuchstaben);
        printf("gefunden: %d\n", gefunden);
    
         while (gefunden!=0)
        {
    
            printf("Buchstaben eingeben: ");
            // fflush(stdin); Dieser Code ist nicht portabel
    		buchstabe=getchar();
    		if ( '\n' != buchstabe )
    			while (( i = getchar()) != '\n' && i != EOF ){} // Portables fflush(stdin) Äquivalent
    		else
    			continue;
            printf("\n Buchstabe: %c\n", buchstabe);
    
            for(i=0;i<anzBuchstaben;i++)
            {
                if(wort[i]==buchstabe) 
    				trefferBuchstabe[i]=1;
    			/*
                else 
    				trefferBuchstabe[i]=0; // Überschreiben bereits geschriebener Einsen verhindern.
    			*/
            }
    
            for (i=0; i<anzBuchstaben; i++)
            {
                if (trefferBuchstabe[i]!=1)
    				break;
            }
    		if ( i == anzBuchstaben )
    			break; // Es sind nur Einsen im Array, die while-Schleife wird beendet.
    
        }
    
    return 0;
    }
    

    Vllt. wäre ne Rückmeldung an den Spieler angebracht, ob der Buchstabe im Wort vorkommt, oder ob er nicht vokommt.
    Und vllt. wärs noch schicker, die Stringlänge an die Funktion zu übergeben, statt sie innerhalb der Funktion berechnen zu lassen.

    int suche2 ( char* wort, size_t len );
    


  • kuhle Sache, dank dir!!

    ja, das mit der rueckmeldung kommt auch noch, wollte nur erstmal, dass der durchlauf an sich funktioniert 🙂


Anmelden zum Antworten