array feld abfragen



  • morgen 😉

    mmm ist so was hier möglich sprich ein array abfragen ?

    #include <stdio.h>
    
    int main (void)
    
    {
    	int feld[]={1,2,3};
    	int zahl=0;
    
    	printf("bitte zahl eingeben :  ");
    	scanf("%d",&zahl);
    
    	if (zahl == feld)
    		printf("Es wurde die richtige Zahl eingegeben");
    	else(zahl != feld);
    		printf("falsche Zahl wurde eingeben");
    
    	getch();
    		return 0;
    }
    


  • Naja möglich ist es schon, aber wahrscheinlich nicht was du willst. Du willst bestimmt nicht zahl mit feld vergleichen, sondern zahl mit den Zahlen in feld.

    Vielleicht sowas hier:

    if (zahl==feld[0]||zahl==feld[1]||zahl==feld[2]) ...
    

    feld[0] ist die erste Zahl in feld, feld[1] die zweite usw.

    Edit: Die Klammern nach else sind falsch. if (bedingung) tuwas; else tuwasanderes;

    Dein printf("falsche Zahl wurde eingeben"); ist aber schon außerhalb vom elsezweig, weil du ein ; hinter das else geschrieben hast und damit tuwasanderes leer ist.

    Du kannst auch Klammern benutzen, zum Beispiel so:

    if (bedingung){
        tuwas1;
        tuwas2;
    }
    else{
        tuwasanderes1;
        tuwasanderes2;
        tuwasanderes3;
    }
    


  • geht so was nicht irgendwie kürzer ?

    also if(zahl == feld[])

    das er mir eben das komplett feld prüft ob diese eingebene Zahl vorhanden ist oder nicht ? ich hab da ein bsp da sind feld[21]={....} da stehen 21 werte drin und ich möchte es eigentlich so haben das ,dass programm nur diese werte aus dem array nimmt und bei allem anderen abbricht ? aber wenn ich das in so eine lange if bedingung schreiben müsste das wäre ja riesig 😞



  • timeisup2 schrieb:

    geht so was nicht irgendwie kürzer ?
    also if(zahl == feld[])

    nee, wie soll das gehen? zwischen unterschiedlichen typen gibts doch keine 'gleich/ungleich'-beziehung, ausser dass der typ immer ungleich ist (deswegen verabscheue ich auch auf C basierte programmiersprachen, wo man sich das == zurechtbiegen kann, wie man lustig ist) *fg*
    mach dir doch eine funktion: int ist_vorhanden (int feld[], size_t feldgroesse, int zahl);
    🙂



  • Du musst das Feld vom Index 0 bis max_size durchlaufen und dann jeden einzelnen Index überprüfen.

    #include <stdio.h>
    
    int main (void)
    
    {
        int feld[]={1,2,3};
        int zahl=0;
        ........
        int i =0;
    
        for(i=0;i<3;++i)
        {
         if(zahl == feld[i])  //Zahl gefunden
        }
    }
    

    Sollten die Zahlen in deinem Array sortiert sein, könntest du auch mit einer Binärsuche arbeiten



  • sowas?

    int main (void) {
    	int feld[] = {1,2,3},
    		zahl   = 0,
    		i      = -1,
    		ergebnis;
    
        printf("bitte zahl eingeben :  ");
        scanf("%d",&zahl);
    
        while(feld[++i])
    		if(ergebnis = feld[i] == zahl)
    			break;
    	printf(ergebnis ? "Es wurde die richtige Zahl eingegeben" : "falsche Zahl wurde eingeben");
    
    	getch();
    	return 0;
    }
    


  • sowas? schrieb:

    ...
    i = -1,
    ...
    while(feld[++i])
    ...
    

    ^^ bist du c++ user? *fg*
    🙂



  • ich nee ich lerne erst c darum die frage

    ich dachte wenn ich einen float feld[3]=(1.1,2.2,3.3}

    dachte ich man kann das beziehungsweise auf eine leichter methode testen , wenn jemand eine eingabe macht sprich 3 eingibt das dann das array durchgeschaut wird.

    darum eben zahl==feld also wenn jemand die zahl eingbit ,dass dann das feld durchschaur wird, was aber nicht passiert, sondern man muss eben zahl==feld[1.1] dann klappt es was ich komisch finde. Das man das Feld das angelegt wurde nicht auf einmal durchsuchen kann ob z.b diese eingebene Zahl vorhanden ist oder nicht.



  • timeisup2 schrieb:

    ich nee ich lerne erst c darum die frage

    ich dachte wenn ich einen float feld[3]=(1.1,2.2,3.3}

    dachte ich man kann das beziehungsweise auf eine leichter methode testen , wenn jemand eine eingabe macht sprich 3 eingibt das dann das array durchgeschaut wird.

    darum eben zahl==feld also wenn jemand die zahl eingbit ,dass dann das feld durchschaur wird, was aber nicht passiert, sondern man muss eben zahl==feld[1.1] dann klappt es was ich komisch finde. Das man das Feld das angelegt wurde nicht auf einmal durchsuchen kann ob z.b diese eingebene Zahl vorhanden ist oder nicht.

    Wie gesagt du musst einen Suche implementieren. Und zahl==feld[1.1] geht bestimmt NICHT.

    Alternativ kannst du fertige Container nehmen die eine Suche bereits implementieren


Anmelden zum Antworten