Zahlen von 1-250 ohne 7
-
Hallo!
Ich will ein Programm schreiben, dass alle Zahlen von 1 bis 250 angibt, die nicht durch 7 teilbar sind und auch keine 7 enthalten.
#include <stdio.h> #include <stdlib.h> int main () { int i; for(i=1;i<=250;i++) { if(i%7!=0 && i%10!=7) printf("%d ",i); } return EXIT_SUCCESS; }
Soweit ok, nur dass ich noch die zahlen 71-79 loswerden muss.
Leider komme ich nicht auf die Lösung, ich hoffe ihr könnt mir weiterhelfen...
-
Dann machs doch ganz einfach so:
if (i%7!=0 && i%10!=7 && (i <= 69 || i >= 80))
-
Oder noch als Alternative:
if(i%7!=0 && i%10!=7 && ((int) i / 10) != 7)
-
Danke!!
Das ich nicht darauf gekommen bin...
schlimm...
-
So ginge es auch noch (jede Ziffer einzeln prüfen):
#include <stdio.h> #include <stdlib.h> #include <math.h> int main () { int i; for(i = 1; i <= 250; i++) { int temp, pot = 10, num = i; int print = 0; if (!i % 7) { continue; } do { temp = num % pot; print = (temp / (pot / 10)) != 7; pot *= 10; num -= temp; } while (num); if (print) { printf("%d ", i); } } return EXIT_SUCCESS; }
-
Ich habe das mit dem i/10!=7 nicht versucht, da ich dachte z.b. 75/10=7.5 und damit auch ungleich 7.
Oder wird dadurch, dass sie Ausgabe eine ganze Zahl sein muss immer abgerundet?
-
Die Kommastellen werden abgeschnitten
-
Durch die Konvertierung in ein int gehen alle Nachkommastellen verloren. Es findet auch keine Rundung statt.
Beispiel:
printf("%d", (int) 7.9);
-
Die do-while Schleife geht noch kürzer
do { print = (num % 10) != 7; num /= 10; } while (num && !print);
-
Wenn du andere verwirren willst, kannst du sowas verwenden:
#include <stdio.h> int main() { int a, b, c; for (a=0;a<=9;a+=(a==6)+1) for (b=0;b<=9;b+=(b==6)+1) for (c=1;c<=9;c+=(c==6)+1) if ((a|b&c)+(c>b)==7&&7==b*c/a/2) return 0; else if ((9*a+3*b+c)%7) printf("%d%d%d\n", a, b, c); }
-
mit_obf schrieb:
Wenn du andere verwirren willst, kannst du sowas verwenden:
#include <stdio.h> int main() { int a, b, c; for (a=0;a<=9;a+=(a==6)+1) for (b=0;b<=9;b+=(b==6)+1) for (c=1;c<=9;c+=(c==6)+1) if ((a|b&c)+(c>b)==7&&7==b*c/a/2) return 0; else if ((9*a+3*b+c)%7) printf("%d%d%d\n", a, b, c); }
Wie kommt man auf so einen Code? Würde mich mal interessieren