Schachbrett mit Reiskörner
-
Hey könnte jemand in dieses Programm eine While-Schleife einbauen ???
-
Glückskeks schrieb:
Hey könnte jemand in dieses Programm eine While-Schleife einbauen ???
Klar. Aber da gibt es viele Möglichkeiten.
Davor:
long long x; while(false) { } for(int i=0; i<64; i++) { x = 2 << i; cout << x << endl; }
Drin:
long long x; for(int i=0; i<64; i++) { while(false) { } x = 2 << i; cout << x << endl; }
Danach:
long long x; for(int i=0; i<64; i++) { x = 2 << i; cout << x << endl; } while(false) { }
Drumherum:
while(true) { long long x; for(int i=0; i<64; i++) { x = 2 << i; cout << x << endl; } break; }
Man kann das auch kombinieren und zum Beispiel eine davor und eine danach machen. Der Fantasie sind keine Grenzen gesetzt. Mit genug while-Schleifen kann man sogar Muster malen. Wozu willst Du while drin haben.
-
sehr cool volkard
-
Ich müsste, dass Programm schreiben und mein Lehrer hat verlangen, dass wir eine While_schleife ienbauen müssen.
Und da war ich ehrlich gesagt überfordert !!Aber wollte mich bei dir bedanken, denn das hat mich weiter gebracht.
-
Glückskeks schrieb:
Ich müsste, dass Programm schreiben und mein Lehrer hat verlangen, dass wir eine While_schleife ienbauen müssen.
Und da war ich ehrlich gesagt überfordert !!Aber wollte mich bei dir bedanken, denn das hat mich weiter gebracht.
Du hast jetzt doch nicht etwa eins von volkards bsp. übernommen?
ps: falls du aus dtschl kommst, solltest du deine deutsch-kenntnisse dringend verbessern...bb
-
Glückskeks schrieb:
Aber wollte mich bei dir bedanken, denn das hat mich weiter gebracht.
volkard, ich bin mir sicher, dein Sarkasmus wird dir noch eines Tages zum Verhängnis!
-
Nexus schrieb:
Glückskeks schrieb:
Aber wollte mich bei dir bedanken, denn das hat mich weiter gebracht.
volkard, ich bin mir sicher, dein Sarkasmus wird dir noch eines Tages zum Verhängnis!
ich hoffe nicht, meist ist es ziemlich genial - das hier hat mich z.bsp. über ne extrem langweilige vorlesung hinweggerettet : D
bb
-
Nexus schrieb:
Glückskeks schrieb:
Aber wollte mich bei dir bedanken, denn das hat mich weiter gebracht.
volkard, ich bin mir sicher, dein Sarkasmus wird dir noch eines Tages zum Verhängnis!
Ich wundere mich, dass das nicht schon längst passiet ist..
(nimmt mich wunder, wie er so im RL dauf ist. :p, btw: Nexus, ans nächste Forentreffen gehen wir auch OK?)
-
Glückskeks schrieb:
Ich müsste, dass Programm schreiben und mein Lehrer hat verlangen, dass wir eine While_schleife ienbauen müssen.
Achso. Dann mein er bestimmt, daß nur eine while-Schleife genommen wird aber keine for-Schleife. Dazu schobst man den Initialisierungsausdruck vor die Schleife und den Weiterschaltungsausdruck ans Ende der Schleife.
Auslong long x; for(int i=0; i<64; i++) { x = 2 << i; cout << x << endl; }
wird dann
long long x; int i=0; while(i<64) { x = 2 << i; cout << x << endl; i++; }
-
Danke und ich wollte mich noch einmal für mein Deutsch entschuldigen
Also mein Programm seht jetzt wie gefolgt aus....
#include <iostream>
#include <conio.h>
#include <cmath>using namespace std;
int main()
{
long long x;
int i=0;
while(i<64) {
x = 2 << i;
cout << x << endl;
i++;
}cin.get();
return 0;
}Aber i-wie rechnet es falsch und alles 2-mal, vielleicht wei0 ja jemand von euch die Ursache, würde mich freuen.
-
Glückskeks schrieb:
Aber i-wie rechnet es falsch und alles 2-mal, vielleicht wei0 ja jemand von euch die Ursache, würde mich freuen.
Erklär doch mal, was diese Zeile macht:
x = 2 << i;
Wenn du das erklären kannst (und nicht nur abschreibst), dann hast du dein Problem gefunden und kannst es lösen.
P.S.: Was willst du mit cmath? Was willst du mit conio.h? Und kannst du mal bitte die cpp-Tags für deinen Code benutzen?
-
es rechnet immer mal 2
Danke, dass hatte ich gar nicht beachtet.
-
Glückskeks schrieb:
es rechnet immer mal 2
Nun, eigentlich nicht. Höchstens wenn du dich sehr salopp ausdrückst.
Danke, dass hatte ich gar nicht beachtet.
Aber anscheinend reicht es dir als Erklärung, wenn ich auch nicht verstehe wie diese halbgare Erklärung reichen kann.
-
es rechnet zwar jetzt richtig, aber trotzdem alles noch doppelt, wenn es bei 2147483648 angelangt ist fängt es wieder bei 1 an
-
Glückskeks schrieb:
es rechnet zwar jetzt richtig, aber trotzdem alles noch doppelt, wenn es bei 2147483648 angelangt ist fängt es wieder bei 1 an
Schreib mal LL direkt hinter die Zahl vor dem <<. Also in deinem zuletzt geposteten Programm "2LL << i". Bloß dieses Mal mit dem richtigen Startwert.
edit: Eine Sache bleibt aber immer noch, selbst mit meinem Tipp: Du musst 'unsigned long long' anstatt 'long long' als Datentyp für x nehmen, ansonsten bekommst du beim 64. Durchlauf einen Überlauf.
-
SeppJ schrieb:
Glückskeks schrieb:
es rechnet zwar jetzt richtig, aber trotzdem alles noch doppelt, wenn es bei 2147483648 angelangt ist fängt es wieder bei 1 an
Schreib mal LL direkt hinter die Zahl vor dem <<. Also in deinem zuletzt geposteten Programm "2LL << i". Bloß dieses Mal mit dem richtigen Startwert.
Ich wollte nur nochmal drauf hinweisen, dass
2 << i == 2pow(2,i)
1 << i == 1pow(2,i)Gruß,
SP
-
ok..Danke für eure Hilfe, also jetzt rechnet es alles richtig von 1-64.
Jetzt stell ich mir Frage !
Wie programmiere ich jetzt, dass wenn ein Weizenkorn 0,05 Gramm wiegt und in einem LKW kann 8840 kg Nutzlast geladen werden pro Anzahl Weizekörner !!
-
Glückskeks schrieb:
Wie programmiere ich jetzt, dass wenn ein Weizenkorn 0,05 Gramm wiegt und in einem LKW kann 8840 kg Nutzlast geladen werden pro Anzahl Weizekörner !!
"programmieren" ist vielleicht etwas übertrieben:
int main() { double weizenkorngewicht_gramm = 0.05; double lkw_nutzlast_gramm = 8840000; }
Et voilà!
Du weißt ja jetzt, wieviele Reiskörner Du hast, kannst also auch ausrechnen, wieviele LKW-Ladungen Du brauchst.
Dem Mathematiker krempeln sich jetzt die Fußnägel hoch. Er weiß, dass die Summe von 1+2+4+8+16+...+2^k = (2^(k+1))-1 ist und denk sich: "Dafür brauch ich kein Programm!".
Gruß,
SP
-
also mein Programm seht jetzt so aus
#include <iostream>
#include <conio.h>
#include <cmath>using namespace std;
int main()
{
unsigned long long x;
int i=0;
double kornanzahl = 0
double weizenkorngewichtkilogramm = 0.00005;
double lkwnutzlastkilogramm = 8840;
double
while(i<64)
{
x = 1LL << i;
cout << x << endl;
i++;gesamtgewicht=weizenkorngewichtkilogrammm*kornanzahl
lkwanzahl=gesamtgewicht/lkwnutzlastkilogramm
}cin.get();
return 0;
}aber irgendwas ist falsche..kann mir jemand helfen wo der Fehler drin steckt ??
-
Glückskeks schrieb:
also mein Programm seht jetzt so aus
Nimm doch mal die cpp-Tags für die Darstellung von Code!
Glückskeks schrieb:
aber irgendwas ist falsche..
kann mir jemand helfen wo der Fehler drin steckt ??Debugger benutzen, Schritt für Schritt nachvollziehen.
Gruß,
SP