goekhan43
Goto Top

Cplusplus Programmierung

ich möchte dieses sogenante "Sissa ibn Dahir" bei Cplusplus programmieren
unten nähere erklärt

also es geht um ein schachbrett das 64 felder hat, auf jedem brett beliebige reiskörner sind, und je nach feld es die reiskörner quadriert werden d.h.

Die Berechnung der Anzahl der Weizenkörner erfolgt folgendermaßen:

1 + 2 + 4 + 8 + ... = 2^0 + 2^1 + 2^2 + 2^3 + ... + 2^63 ( ^ bedeutet hochzahl, nur zur info)

Auf allen Feldern zusammen wären es 264−1 oder 18.446.744.073.709.551.615 Weizenkörner

und würde normalerweise mit einer while schleife programmieren da ich das eher kann als andere schleifen.

habe den grundgerüst schonma gebaut:


#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

int main()

{
double koerner
double feld
double eingabe


cout << " Geben sie eine feldzahl ein auf der sie wissen möchten wie viele koerner auf dem beliebigem feld sind: " << endl;
cin >> eingabe;

-- --| - -- -- |- --- -- - - -- -- |-- -- - - -- -- - - --|

cout<< " auf dem " << eingabe << " . ten feld sind: " << koerner << " koerner! " << endl;


}


getch;

return 0;
}


auf das letzte cout war nur mal so das ich weis was am ende rauskommen muss, da wo ich den strich gemacht hab in der mitte, da muss noch meine codierung rein, bin aber noch am überlegen wie ich das tun soll, kann mir jemand helfen??


danke....

Content-ID: 128269

Url: https://administrator.de/contentid/128269

Ausgedruckt am: 25.11.2024 um 18:11 Uhr

TsukiSan
TsukiSan 29.10.2009 um 23:59:28 Uhr
Goto Top
@echo OFF
@ NO HALLO

Hallo Goekhan43,

ich habe mir deinen mittleren Strich (den dritten von rechts) genommen und komme
auf was ganz simples:
for i = 0 to 64
Variable = 2^i
next

Hab ich den richtigen Strich gewählt?

Gruß
Tsuki

Ps.: mein Beispiel zum Probieren als VBS. Du musst das nur noch "konvertieren" nach C++
mrtux
mrtux 30.10.2009 um 00:45:48 Uhr
Goto Top
Hi !

Zitat von @Goekhan43:
da ich das eher kann als andere schleifen.

[ot]
...und um andere Flugzeuge nicht zu streifen, fliege ich nur Backbordschleifen...sagte der Pilot in seiner Not. face-wink
[/ot]

mrtux
maretz
maretz 30.10.2009 um 06:42:01 Uhr
Goto Top
[quote]
, und je nach feld es die reiskörner quadriert werden
[/quote]

[quote]
Die Berechnung der Anzahl der Weizenkörner
[/quote]

Die Lösung ist einfach: Solange du nur Reiskörner auf das Schachbrett legst wird die Anzahl an WEIZENKÖRNERN auf dem Brett immer 0 sein. Geht ganz ohne Schleife...

Ansonsten: Du hast bisher nen cin und nen cout - keine Berechnung oder sonstwas... Du hast bei allen double .... kein ; drin und deine Main-Funktion ist kein

public static void main (args)

Mein c++ liegt lange zurück - aber das dir der Compiler DAS nicht gleich wieder vor die Füße gerotzt hat das kann ich mir grad nicht vorstellen...
Goekhan43
Goekhan43 31.10.2009 um 00:04:06 Uhr
Goto Top
ja ich frag ja nich was falsch is sondern wie ich das programmiern soll
Goekhan43
Goekhan43 31.10.2009 um 00:04:47 Uhr
Goto Top
oder besser gesagt habe nur mal diese schleife (while) angeschaut von den schleifen... jetzt???
Goekhan43
Goekhan43 31.10.2009 um 00:06:18 Uhr
Goto Top
ich wollte eig. nichts mit den strichen im strich sondern eig nur einfach das programm dort wo das durchgestrichene strich ist, also z.b.
while (0>=n)

...

usw nur ein beipsiel ich weis eben nicht genau wie ich das tun soll....
Guenni
Guenni 31.10.2009 um 15:51:35 Uhr
Goto Top
Hi Goekhan43,

du brauchst doch pro Schleifendurchlauf die Anzahl Reiskörner nur zu addieren:


int _tmain(int argc, _TCHAR* argv)
{
	double korn=1;
	double feld=0;
	int i=0;
	int eingabe=0;
	do
		scanf("%d",&eingabe);  
	while(eingabe<=0 || eingabe>64);
	
	for(i=0;i<eingabe;i++){
		feld+=korn; /* Gesamtzahl Reiskörner addieren */
		printf("Feld %2d %37.0f\n",i+1,korn);  
		korn+=korn; /* Körner Feld für Feld addieren */
	}
	printf("\nZusammen: %35.0f Reiskoerner\n\n",feld);  
	return 0;
}


Gruß
Günni