Warum ist bei Zeile 3 (int main () {) Ein Syntax Error?
ich verstehe nicht was daran falsch ist
schick den ganzen Fehler bitte
./Datei01.c: line 3: syntax error near unexpected token `('
'/Datei01.c: line 3: `int main() {
Aber das macht generell kein Sinn. Warum fragst du, ob wenn eine nummer / 1 = 0 ist? Das geht ja nicht ausser die Zahl ist 0. Und nummer/nummer gibt IMMER 1
Stimmt, da sollte eigentlich % hin.
Könntest Du uns mal noch die Befehlszeile schicken, wie Du Dein Programm kompilierst? Weil syntaktisch sehe ich auf's erste keinen Fehler.
clang -std=c11 -Wall -g Datei.c -c
Da kommen keine error und dann mach ich
./Datei.c
wo es mir einen Syntax Error zeigt
3 Antworten
clang -std=c11 -Wall -g Datei.c -c
Da kommen keine error und dann mach ich ./Datei.c wo es mir einen Syntax Error zeigt
Autsch!
Nicht die C Datei ausführen, sondern das generierte Binary
Du willst auch kein obj File erzeugen, sondern ein ausführbares Binary.
Probier mal das:
clang -std=c11 -Wall -o Datei Datei.c
dann
./Datei
omg es funktsoniert. aaa vielen dank!
Nun muss ich nur noch den Code umschreiben weil 4 ist keine Primzahl lol
Syntaktisch ist der Code korrekt. Elegant programmiert und universell einsetzbar ist er aber nicht. Schau Dir als Beispiel mal den Code weiter oben an von User decoyishere
Aber was wenn ich if (nummer / 1 && nummer / nummer == 0) mache?
Weil ja Primzahlen nur durch sich selbst und durch 1 teilbar sind. So zeigt es mir auch an, dass 4 keine Primzahl ist. Grad getestet.
Edit: nvm, es sagt 5 ist auch keine. Ich guck mir den code an. Danke
Das hilft Dir nicht weiter. Jede Zahl x ist ohnehin immer durch 1 und durch sich selbst Teilbar (abgesehen von 0/0). Eine Zahl ist dann prim, wenn sie eine Ganzzahl grösser als 1 ist und durch keine andere Zahl ganzzahlig teilbar ist als durch sich selbst.
Das kann man aber für eine Zahl x nur beweisen, in dem man die Zahl x durch alle anderen Zahlen zwischen 2 und x dividiert und bei jeder Division prüft, ob der Quotient ganzzahlig ist oder nicht. In der Praxis macht man das aber nicht mit dem Divisionsoperator, sondern man verwendet den Modulo-Operator (%), den es auch in C gibt. Modulo bedeutet Rest einer ganzzahligen Division, z.B. "5 durch 3" ergibt "1 Rest 2", d.h. in C: 5 % 3 = 2. Eine Zahl x ist dann teilbar, wenn x % y = 0. In allen anderen Fällen, wenn x % y ungleich 0 ist, ist die Zahl nicht teilbar.
Wenn Du z.B. wissen willst, ob
5 eine primzahl ist, dann müsstest Du mit Deinem Programm prüfen:
5 % 4 = 1
5 % 3 = 2
5 % 2 = 3
(5%5 und 5%1 sind unnötig, da bereits klar ist, dass dies immer teilbar ist).
Wie Du siehst, 5 ist weder durch 4, 3, noch durch zwei teilbar und damit prim.
Ich wollte mich nochmal bedanken. Ich habe nun geschafft auch einen Code zu schreiben der funktsoniert. Zwar nicht so gut wie der von decoyishere, aber so das er das macht was er soll.
Der Code funktioniert:
#include <stdio.h>
int main() {
int n, i, flag = 0;
printf("Zahl eingeben: ");
scanf("%d", &n);
for (i = 2; i <= n / 2; ++i) {
// keine Primzahl
if (n % i == 0) {
flag = 1;
break;
}
}
if (n == 1) {
printf("1 geht leider nicht");
}
else {
if (flag == 0)
printf("%d ist eine Primzahl.", n);
else
printf("%d ist keine Primzahl.", n);
}
return 0;
}
evtl. weil ein main nur einmal erlaubt ist im Hauptprogramm und du gerade in einem untergeordneten File bist
Ah danke, aber leider:
-bash: .Datei01.o: cannot execute binary file: Exec format error
Am Besten ich schreib es einfach nochmal ganz neu, oder? Ich glaub ich hab da iwie nur Mist gemacht. Auf jeden Fall danke für die Hilfe