Reis am Schachbrett Programm

Andreas703

Mitglied
Also ich denke das kl Spielchen mit dem Reis am Schachbrett is bekannt aber trotzdem mal die Erklärung

Ich progge unter Windows mit DevCpp das hatte ich noch vergessen


Auf jedem Feld am Schachbrett kommt 1 Reiskorn mehr
D.h. 1.Feld 1 Korn, 2.Feld 2Körner, 3.Feld 3 Körner, usw.


Jetzt ist die Frage wie schreibe ich ein solches Programm sodas es von hinten ausgegeben wird?( Dies ist ein Schulprojekt und ich check es ned^^)
Was ich unbedingt drinnen haben muss sind arrays

Ich weiß nicht ob der Anfang schonmal richtig ist aber hier mal zum begutachten

Code:
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
	unsigned long long x,y,z;
	
	y=1;
	for(x=1;x<65;x++)
	{
		if(x==1)
		{
		 cout<<"1\t1"<<"\n";
	 }
	 else
	 {	  
		   cout<<x;
		   cout<<"\t";
		   y=y*2;
		   cout<<y<<"\n"; 
	   }		   
	}
	getch();
}
Falls noch Fragen offen stehen einfach Fragen

mfg Andreas
 
Zuletzt bearbeitet:
Vermutlich meinst Du mit "von hinten", dass die Berechnung rekursiv definiert ist, etwa so:

Die Anzahl der Reiskörner auf dem Feld 64 ist gleich 2 x die Anzahl der Reiskörner auf dem Feld 63

Oder
Anzahl[n] = 2 * Anzahl[ n-1] ;

Ferner gilt
Anzahl[1] = 1;

Oder wie?

vop
 
moin


vop hat gesagt.:
Ferner gilt
Anzahl[1] = 1;
Falsch, Anzahl[0]=1 !

@Andreas703
Code:
#include <windows.h>

int main(int argc, char* argv[])
{
	unsigned long long feld[8*8];
	int x = 2;
	feld[0] = 1;
	
	for(int i=1; i<64; i++)
	{
		feld[i] = feld[i-1] * 2;
	}

	return 0;
}
So kannst du das Ausgeben wie du willst.


mfg
umbrasaxum
 
sry wenn ich nerve aber kann man es mir mit meinem Ansatz vl auch sagen oder isses so wies ich hab unmöglichen mit arrays zu definieren?so wirds mir nämlich mein Lehrer glaub ich nicht glauben^^
 
moin


Naja, falsch istb dein Ansatz nciht unbedingt, warum erstellst du denn aber kein Array?!
Du "speicherst" den neuen Wert ja immer in y und dieses y müsstest du in nem Array speichern.


mfg
umbrasaxum
 
moin



Du definierst das Array am besten so: unsigned long long Feld[8*8];

in deiner Schleife machst du dann z.B.:
Code:
y=y*2;
Feld[n] = y;
und das n wird natürlich bei jedem Durchlauf ein höher gezählt.

Wichtig ist nur das Feld[0] gleich 1 ist!


mfg
umbrasaxum
 
Das bekannte 'Reiskörner auf dem Schachbrett' - Problem geht aber so, daß die Anzahl der Reiskörner mit jedem Feld verdoppelt wird, also F1=1, F2=2, F3=4,...,F64 = 2^63.
Allgemein: Die Anzahl Reiskörner auf Feld n: F(n)=2^n-1.
Dann hast Du auf dem letzten Feld 2^63 Reiskörner. Mit Deinem Schachbrett-Problem wären es gerade mal 64, die Anzahl der Reiskörner auf Feld n wäre: F(n) = n.
Weiterhin:
damit meine ich vom 65.Feld angefangen bis zum 1.
Ein Schachbrett hat nur 64 Felder.
 
Zurück