[C] Hilfe, Aufgabe läuft nicht.
-
Du musst statt bool zB ein int verwenden, die werden ähnlich behandelt. Wenn ein int-Ausdruck gleich 0 ist, ist das äquivalent zu false, ansonsten true.
Also:int a = ... if (!a) { ... } //a == 0 if (a) { ... } //a != 0
-
hallo D-U-D-E,
Danke für die Antwort aber ich bin noch nicht lange bei C dabei und deshalb hab ich jetzt Schwierigkeiten dieses Bool so zu ändern wie du geschrieben hast.
Irgendwie will das nich im Kopf klick machen
-
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 }
-
Wenn dein älterer C-Compiler das nicht machen will, dann benutze eigene Makros mit:
#define bool int; #define false 0; #define true 1:
Viel anders machen die anderen Compiler das auch nicht.
-
Das bool kannst du ersetzen mit:
typedef unsigned bool; bool false = 0; bool true = !false;
Variablen dürfen in C89 nur am Funktionsanfang deklariert werden.
Kommentare sind nur als Blockkommentare erlaubt
/* Kommentar */
-
Besser wäre es noch die Werte durch ein
const
vor dem versehentlichen Überschreiben zu schützen.const bool false = 0; const bool true = !false;
true
undfalse
als Makro auszuführen hat allerdings den Vorteil, du kannst die Werte nicht mit Konstanten/Variablen gleichen Namens verstecken.
-
#ifdef __cplusplus #error ich weiss nicht was ich tue #endif typedef int bool; enum {false,true}; bool 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 true; // dann gebe ja zurueck } } return false; //ansonsten nein }
-
Ahaa!
Also sowie es llll gemacht hat ist aber auch ok oder?
Dann habe ich immernoch Fehler im "anderen" Stück.
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(int 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; }
Wenn ich dort die Fehler ausmerzen möchte, dann bleiben immernoch Fehler in diesem Teil.
-
Lass mich raten, der Fehler den du uns nicht mitteilen willst ist in Zeile 10 und besagt, dass das int da nicht hin darf?
-
Ich bin echt nich bei der Sache dabei, Viel zu Nervös. Tut mir Leid.
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(int 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; }
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(19) : error C2059: Syntaxfehler : '}'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ')' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2065: 'i' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : warning C4552: '<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2059: Syntaxfehler : ')'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(26) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : warning C4013: 'printf' undefiniert; Annahme: extern mit Rueckgabetyp int
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(28) : warning C4013: 'scanf' undefiniert; Annahme: extern mit Rueckgabetyp int
Fehler beim Ausführen von cl.exe.Dies kommt, wenn ich das Programm laufen lassen will. In der Tat unter anderem auch in Zeile10. Aber ich denke, das hängt nicht nur wegen der Zeile 10 ab oder doch?
-
#include <stdio.h> #include <stdlib.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 vektor[10]; int eingabe, i, len; for (i = 0; i < 10; ++i) { vektor[i] = 0; } len = sizeof(vektor)/sizeof(*vektor); //zahlen abfragen und fuellen for (i=0;i< len;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,len)) { printf("%d wurde breits eingegeben\n", eingabe); } else { printf("Ausgabe: %d\n", eingabe); vektor[i] = eingabe; } } return 0; }
Der Visual C++ 6 ist so dermaßen veraltet. Vielleicht klappt der Code so, aber vielleicht auch nicht. Ein aktueller Compiler schafft es jedenfalls.
-
pcjr schrieb:
Ich bin echt nich bei der Sache dabei, Viel zu Nervös. Tut mir Leid.
Musst du nicht. Nur auch mal die Tipps ansehen, wenn man sie dir schon auf dem goldenen Tablett serviert.
pcjr schrieb:
Dies kommt, wenn ich das Programm laufen lassen will. In der Tat unter anderem auch in Zeile10. Aber ich denke, das hängt nicht nur wegen der Zeile 10 ab oder doch?
Nicht alle, aber fast.
pcjr schrieb:
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(19) : error C2059: Syntaxfehler : '}'
Hier scheint er Probleme mit deiner leeren Klammer zu haben. Lasse sie weg, ohne Elemente hat sie auch keine Wirkung.
pcjr schrieb:
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ')' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2143: Syntaxfehler : Fehlendes ';' vor 'type'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2065: 'i' : nichtdeklarierter Bezeichner
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : warning C4552: '<' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(25) : error C2059: Syntaxfehler : ')'
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(26) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'All das dürfte verschwinden, wenn du int i; an den Funktionsanfang schreibst.
pcjr schrieb:
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(27) : warning C4013: 'printf' undefiniert; Annahme: extern mit Rueckgabetyp int
C:\Programme\Microsoft Visual Studio\MyProjects\jh\jh.c(28) : warning C4013: 'scanf' undefiniert; Annahme: extern mit Rueckgabetyp intDu wirst vergessen haben stdio.h zu inkludieren.
-
Jawoll es läuft aber was hast du hier gemacht?
int eingabe, i, len;
UNd eimal hier:
if (Contains(vektor,eingabe,len))
-
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?