Wert einer Zahl bestimmen
-
@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)
-
@wob sagte in Wert einer Zahl bestimmen:
@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.
Ja
Dann halt
if (n <= 7) puts("meh"); else puts("7");
Weil in der Aufgabenstellung auch nichts davon steht wie "Zahl" zu verstehen ist. Also ob negative Zahlen als Eingabe oder Ergebnis erlaubt sind.
(ich wollte eigentlich nur darauf hinaus, dass in der Aufgabenstellung fehlt, dass die größte Zahl gesucht ist, die die genannten Bedingungen erfüllt)
Naja, theoretisch ist die Aufgabe auch so wie sie formuliert ist interessant, nämlich wenn man annimmt dass man mit beliebig grossen/kleinen Zahlen zu tun hat. Also kein Limit vonwegen 32/64/128 Bit.
-
@hustbaer sagte in Wert einer Zahl bestimmen:
Dann halt
https://www.c-plusplus.net/forum/topic/351716/wert-einer-zahl-bestimmen/11
-
@Swordfish Übersehen