Wert einer Zahl bestimmen
-
@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
-
@Fab_ian
Ich bin mal lieb:#include <stdio.h> // Idee: Wenn eine Zahl durch 7 teilbar sein soll, dann muss diese Zahl // ein vielfaches von 7 sein d.h. 0, 1*7, 2*7, 3*7,... int main() { int n = 200; int cn = 0; // Vielfaches von 7, immer durch 7 teilbar while (cn < n) { if (cn % 3 != 0) printf("Neue Zahl: %i\n", cn); cn += 7; } return 0; }