[C] Benötige Hilfe bei meiner Aufgabe

Manometer. Jetzt ist viel von den Fehlern weg. Nur wegen dem #include <stdio.h>.

C++:
#include <stdio.h>

int Contains(int vek[], int eingabe, int laenge) 
{ 
 int i; 

    for (i = 0; i <laenge; i++) //durchlaufe das array 
    { 
        if (vek[i] == eingabe)//ist das N-Element identisch mit der eingabe 
        { 
            return 1; // dann gebe ja zurueck 
        } 
    } 

    return 0; //ansonsten nein 
} 
 
int  main(void)
{
    //ein 10stelliges array erstellen und es {} leer initialisieren ( d.h. an jeder stelle steht 0}
    int  vektor[10];
 
    //hilfsvariable fuer eingabe
    int  eingabe;
 
    //zahlen abfragen und fuellen
    for(i=0;i<sizeof(vektor)/sizeof(vektor[0]);i++)
    {
        printf("Geben Sie eine Zahl ein und bestaetigen sie mit ENTER\n");
        scanf("%i",&eingabe);//benutzer eingabe einlesen
        
        //ueberpruefen ob zahl bereits eingegeben wurde
        if(!Contains(vektor,eingabe,sizeof(vektor)/sizeof(vektor[0])))
        {
            printf("Ausgabe: %i \n",eingabe);
                vektor[i]=eingabe;
        }
        //else
        //    printf("%i wurde breits eingegeben\n",eingabe);    
}
    
    return  0;
}
So sieht mein Programm jEtzt aus.

Fehler:
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2065: 'i' : nichtdeklarierter Bezeichner
Fehler beim Ausführen von cl.exe.

Ich hatte vorher dort das hier stehen :
for(int i=0;i<sizeof(vektor)/sizeof(vektor[0]);i++)

Dann kommt dies hier raus:
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2143: Syntaxfehler : Fehlendes ')' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2065: 'i' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : warning C4552: '<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : error C2059: Syntaxfehler : ')'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(28) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'


Was ist denn nun noch falsch?
 
Du musst schon ein
int i;
machen, damits die Variable auch gibt.

Das i aus Contains gilt nur für Contains, das nützt dem main nichts.

Und wenn du dem Contains als dritten Parameter immer 10 mitgibst, könnte es passieren, das eine Zahl nicht ausgegeben wird, obwohl du sie noch nicht eingegeben hast.
Wenn du nämlich einen der Startwerte eingibst, die am Anfang im Array stehen.
Gib als dritten Parameter i mit, damit Contain auch weiß wie voll das Array schon ist.

Gruß
 
ach ich glaube ich weiß was du meinst.

Ich muss ein int i; machen, dann weiß er nöhmlich in der For-Schleife, woher er das i nehmen soll. Zumindest ist es jetzt ausführbar.

Sobald ich aber eine Zahl zweimal eingebe, sagt er nicht, dass die Zahl schon eingegeben wurde.

Das bedeutet doch, dass ich in der If Else Anweisung etwas noch ändern muss oder?
 
C++:
#include <stdio.h>

int Contains(int vek[], int eingabe, int laenge) 
{ 
 int i; 

    for (i = 0; i <laenge; i++) //durchlaufe das array 
    { 
        if (vek[i] == eingabe)//ist das N-Element identisch mit der eingabe 
        { 
            return 1; // dann gebe ja zurueck 
        } 
    } 

    return 0; //ansonsten nein 
} 
  
int  main(void) 

	
{ 
	int i;
    //ein 10stelliges array erstellen und es {} leer initialisieren ( d.h. an jeder stelle steht 0} 
    int  vektor[10] ; 
  
    //hilfsvariable fuer eingabe 
    int  eingabe; 

    //zahlen abfragen und fuellen 
    for(i=0;i<sizeof(vektor)/sizeof(vektor[0]);i++) 
    { 

		printf("Geben Sie eine Zahl ein und bestaetigen sie mit ENTER\n"); 
        scanf("%d", &eingabe);//benutzer eingabe einlesen 
        
        //ueberpruefen ob zahl bereits eingegeben wurde 
        if (Contains(vektor,eingabe,sizeof(vektor)/sizeof(*vektor))) 
        { 
            printf("%d wurde breits eingegeben\n", eingabe);     
            
        } 
        else 
        { 
           printf("Ausgabe: %d\n", eingabe); 

           vektor[i] = eingabe; 
        }
} 

    
    return  0; 
}

So würde ich es jetzt lassen und abgegben. Ich bin gespannt, was für Fragen mir da gestellt werden. Ich hoffe ich kann das gut erklären, wieso ich was jetzt habe.
 
Nocheinmal:
Das
C++:
if (Contains(vektor,eingabe,sizeof(vektor)/sizeof(*vektor)))
besser durch das
C++:
if (Contains(vektor,eingabe,i))
ersetzen.

Sonst werden immer alle 10 ints durchgeprüft, auch wenn noch gar nichts eingegeben wurde.
 
Danke für deine Geduld. Alleine... Niemals. Niemals hätt ich das geschafft. Ich muss mich jetzt mal da dran setzen und genau verstehen, was du verbessert hast und auch wieso.
Danke dir auch für die Aufgabe davor!

C++:
#include <stdio.h>

int Contains(int vek[], int eingabe, int laenge) 
{ 
 int i; 

    for (i = 0; i <laenge; i++) //durchlaufe das array 
    { 
        if (vek[i] == eingabe)//ist das N-Element identisch mit der eingabe 
        { 
            return 1; // dann gebe ja zurueck 
        } 
    } 

    return 0; //ansonsten nein 
} 
  
int  main(void) 

	
{ 
	int i;
    //ein 10stelliges array erstellen und es {} leer initialisieren ( d.h. an jeder stelle steht 0} 
    int  vektor[10] ; 
  
    //hilfsvariable fuer eingabe 
    int  eingabe; 

    //zahlen abfragen und fuellen 
    for(i=0;i<sizeof(vektor)/sizeof(vektor[0]);i++) 
    { 

		printf("Geben Sie eine Zahl ein und bestaetigen sie mit ENTER\n"); 
        scanf("%d", &eingabe);//benutzer eingabe einlesen 
        
        //ueberpruefen ob zahl bereits eingegeben wurde 
        if (Contains(vektor,eingabe,i)) 
 
        { 
            printf("%d wurde breits eingegeben\n", eingabe);     
            
        } 
        else 
        { 
           printf("Ausgabe: %d\n", eingabe); 

           vektor[i] = eingabe; 
        }
} 

    
    return  0; 
}
 
Zurück