Wert einer Zahl bestimmen
-
Hallo Liebes Forum,
ich habe folgendes Problem:
ich möchte eine Zahl z die kleiner als eine Variable n ist, und die durch 7 aber nicht durch 3 geteilt werden kann, ermitteln können. n wird von mir eingegeben. Ich habe schon hin und her probiert, bekomme aber keine valide Ausgabe.
es würde mich freuen, wenn mir jemand weiterhelfen kann.
LG
#include <stdio.h> #include <stdlib.h> int main() { int n; int z; for(z<n, z%7==0;){ goto the_end; if(z%3==0){ break; goto the_end; } else{ printf("%d",z); } } }
-
@Fab_ian goto the_book
-
@manni66 Hier sind die Leute wohl nicht so nett wie im JavaScript Forum
-
@Fab_ian sagte in Wert einer Zahl bestimmen:
@manni66 Hier sind die Leute wohl nicht so nett wie im JavaScript Forum
Nein!
-
@manni66 sehr kreativ!
-
@Fab_ian sagte in Wert einer Zahl bestimmen:
z<n, z%7==0
Was willst Du damit ausdrücken?
Vergissgoto
. Gibt es nicht.
-
So ist es. Wo immer du
goto
für Anfänger gesehen hast, wirst du nicht lernen, lesbares C zu schreiben. Ebenso istbreak
als Mittel der Ablaufsteuerung suspekt. Sollte nur für Ausnahmefälle sein, nicht das erste Mittel der Wahl. Wenn man dann auch noch deine Syntaxfehler beimfor
sieht, dann ist wirklich klar, dass du dringend zurück zu den ersten Kapiteln eines Anfängerbuches musst. Aber bloß nicht das Buch, das du bisher benutzt hast! Davor kann man dir herzlich wenig helfen, denn die grundsätzliche Syntax und (übliche) Ablaufsteuerung musst du schon halbwegs kennen, sonst verstehst du die Antworten nicht.
-
@Swordfish Hallo, ich lerne im Moment C in einer anderen "natürlichen" Sprache, als der deutschen und diese Bezeichnungen stehen im Skript. Ich bin ganz am Anfang und kenne mich nicht sehr gut im Programmieren aus, hatte lediglich etwas Java Erfahrung davor. Ich möchte das die Zahl kleiner als n und durch 7 teilbar ist.
-
@Fab_ian sagte in Wert einer Zahl bestimmen:
@Swordfish Hallo, ich lerne im Moment C in einer anderen "natürlichen" Sprache, als der deutschen und diese Bezeichnungen stehen im Skript. Ich bin ganz am Anfang und kenne mich nicht sehr gut im Programmieren aus, hatte lediglich etwas Java Erfahrung davor. Ich möchte das die Zahl kleiner als n und durch 7 teilbar ist.
Dann ist dein Skript Unsinn. Das
for
ist schlicht falsch und sollte nicht einmal compilieren. Das muss doch offensichtlich sein, dass dein Skript da falsch ist. Und dasgoto
Gift ist, wurde dir auch mehrmals gesagt, kannst du aber auch offiziell haben: https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
Also ist dein Skript auf einem Stand von vor 1968. Damit wirst du nicht glücklich werden. Wenn du falsch lernst, ist schlimmer, als gar nicht zu lernen. Und auf jeden Fall wäre die Alternative, mit einem guten Buch zu lernen (z.B. K&R: The C Programming Language), viel einfacher und bringt Erfolg.
-
@SeppJ Für eine gute Lektüreempfehlung wollte ich mich auch extra noch in einem Literaturforum anmelden, aber danke dafür, ich werde es mir mal anschauen.
-
@Fab_ian sagte in Wert einer Zahl bestimmen:
ich möchte eine Zahl z die kleiner als eine Variable n ist, und die durch 7 aber nicht durch 3 geteilt werden kann
if (n > 7) puts("z = 7"); else puts("z gibt's nicht.");
-
@Fab_ian
Nimm n.
Ziehe 1 ab.
Teile durch 7 (Ganzzahldivision).
Multipliziere wieder mit 7.
Prüfe ob die Zahl die du jetzt hast durch 3 teilbar ist.
Wenn ja: ziehe 7 ab.
Fertig.Übersetze das nach C und du hast dein Programm.
-
Ok, hat mir schon ein bisschen was gebracht.
Danke und schönen Abend!
-
@hustbaer also eine while-Schleife in dem Fall?
-
@Fab_ian sagte in Wert einer Zahl bestimmen:
@hustbaer also eine while-Schleife in dem Fall?
Welches der Worte "Nimm", "Ziehe", "Teile", "Multipliziere", "Prüfe", "Fertig" verbindest du mit einer wiederkehrenden Schleife?
-
@SeppJ gut das war Schmarrn. Ein wenig stehe ich dennoch auf dem Schlauch..
-
Nimm n = 215
Zieh 1 ab = 214
Teile durch 7 = 30 (Rest wird ignoriert)
Multipliziere wieder mit 7 = 210
Prüfe ob die Zahl die du jetzt hast durch 3 teilbar ist: ja, ist sie.
Wenn ja: ziehe 7 ab = 203
Tadaa.
-
Die Aufgabe wird wohl auch erfüllt mit:
puts("n eingeben"); int n; scanf("%d", &n); int z = INT_MIN / 7 * 7; if (z % 3 == 0) z += 7; if (n < z) puts("Eine solche Zahl kann in int nicht mehr dargestellt werden"); else printf("%d ist kleiner als %d und durch 7, aber nicht durch 3 teilbar.\n", z, n);
Ungenaue Aufgabenstellung => korrekte, aber nutzlose Antwort
-
Ja. Und je nachdem wie man "Zahl" auslegt kann die Aufgabe auch so einfach wie
puts("0");
sein.
-
Gut. Danke euch!
-
@hustbaer sagte in Wert einer Zahl bestimmen:
puts("0");
Naja, 0 ist zwar durch 7 teilbar, aber eben auch durch 3 - und letzteres sollte sie ja gerade nicht sein. Daher passt 0 nicht.
(ich wollte eigentlich nur darauf hinaus, dass in der Aufgabenstellung fehlt, dass die größte Zahl gesucht ist, die die genannten Bedingungen erfüllt)