[C] Hilfe, Aufgabe läuft nicht.
-
Variablen deklariert und die Länge des Arrays in len gespeichert:
len = sizeof(vektor)/sizeof(*vektor);
-
@ Paul Müller
#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("%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 es nun aus. DANKE schonmal! Das einzige , was nicht richtig geht, ist die else funktion, denke ich.
Wenn ich zwei Zahlen( die selben wie z.B 3 und dann nochmal 3 eingebe) dann sagt er nicht: 3 wurde bereits eingegeben.
-
Die Zeile ist ja auch auskommentiert -.- Außerdem solltest du das Array sehr wohl initialisieren:
for (i = 0; i < 10; ++i) { vektor[i] = 0; }
-
#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 läuft jetzt alles. Jetzt muss ich mir in Ruhe nochmal angucken.
Wenn ich eine Zahl 1 eingebe, dann gibt er mir die Zahl 1 aus. Gebe ich dann irgendwann nochmal die Zahl 1 ein, dann sagt er mir, dass die schon eingegeben worden ist. So ist es doch richtig? Das funktioniert natürlich nur 10mal.
-
Das einzige, was mir im Moment auffällt ist, daß das Programm eine Zahl, die bereits eingegeben wurde nicht mehr ins Array einfügt. Dem Aufgabentext zufolge sollte das doch nicht so sein, oder?