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-Key: 128269

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: TsukiSan
TsukiSan Oct 29, 2009 at 22:59:28 (UTC)
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++
Member: mrtux
mrtux Oct 29, 2009 at 23:45:48 (UTC)
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
Member: maretz
maretz Oct 30, 2009 at 05:42:01 (UTC)
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...
Member: Goekhan43
Goekhan43 Oct 30, 2009 at 23:04:06 (UTC)
Goto Top
ja ich frag ja nich was falsch is sondern wie ich das programmiern soll
Member: Goekhan43
Goekhan43 Oct 30, 2009 at 23:04:47 (UTC)
Goto Top
oder besser gesagt habe nur mal diese schleife (while) angeschaut von den schleifen... jetzt???
Member: Goekhan43
Goekhan43 Oct 30, 2009 at 23:06:18 (UTC)
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....
Member: Guenni
Guenni Oct 31, 2009 at 14:51:35 (UTC)
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