Pikes
17.12.2011, 16:02
Hey Com =),
ich hätte eine kleine Frage an die User, die sich vllt mit C++ beschäftigen.
Wir haben eine kleine Zusatzaufgabe bekommen, die wir doch bitte zu Hause alleine lösen sollen.
"Dodon, der Märchenkönig, nahm bei seinem Feldzug 70 Feinde
gefangen, die er in 70 Einzelzellen steckte. An seinem Geburtstag
sollten einige freigelassen werden, und zwar nach einem ganz eigenartigen
Verfahren (vom Hofmathematiker ausgedacht): Im einem
ersten Durchgang werden alle Zellentüren geöffnet, in einem zweiten
Durchgang wird jede zweite Tür wieder geschlossen. Im dritten
Durchgang wird jede dritte Tür, wenn sie offenstand, geschlossen,
und wenn sie geschlossen war, geöffnet. Und so geht es im vierten,
fünften,... bis zum 70. Durchgang weiter. Die Frage ist, welche
Türen schließlich offenstanden, als der Geburtstag des Königs
anbrach."
Hier der Code
//IT11b
//Datum 18. Dez. 2011
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <conio.h>
using namespace std;
int main()
{
int z=2;
bool Zelle[71];
//1. Durchgang
//Alle Zelltüren aufschließen
cout<<"Durchlauf 1"<<endl;
for(int i=0; i<71; i++)
{
Zelle[i] = true;
cout<<"0";
}
cout<<endl;
//Durchgänge
for(int durchgang = 2; durchgang <= 71; durchgang++)
{
for(int i=1; i<71; i+=durchgang)
{
if(durchgang % 2 == 0) //gerade Durchgänge
{
Zelle[i] = false; //zuschließen
}
else //Ungerade Durchgänge
{
Zelle[i] = !Zelle[i]; //invertieren
}
}
// Ausgabe
cout<<"Durchlauf " <<z++<<endl;
for(int i=0; i<71; i++)
{
if(Zelle[i]==true) cout<<'O';
else cout<<'x';
}
cout<<endl;
system("PAUSE");
}
return 0;
}
Funktionieren tut an sich alles. Nur die Ausgabe ist fehlerhaft glaube ich!? Unsere Lehrerin hat die ersten 3 Durchläufe angegeben:
Durchlauf 1
00000000000000000............
Durchlauf 2
0x0x0x0x0x0x0x0x0x..........
Durchlauf 3
0xxx000xxx000xxx000...........
usw
Bei mir kommt aber das raus:
http://s7.directupload.net/images/111217/g89gxvk4.jpg
Fehlerhaft ist Durchlauf 3
Kann mir evtl jmd. auf die Sprünge helfen!? Dürfte doch eig garnicht sein!?
Liebe Grüße
PS: O steht für offene Zellentür, X für geschlossene Zellentür
ich hätte eine kleine Frage an die User, die sich vllt mit C++ beschäftigen.
Wir haben eine kleine Zusatzaufgabe bekommen, die wir doch bitte zu Hause alleine lösen sollen.
"Dodon, der Märchenkönig, nahm bei seinem Feldzug 70 Feinde
gefangen, die er in 70 Einzelzellen steckte. An seinem Geburtstag
sollten einige freigelassen werden, und zwar nach einem ganz eigenartigen
Verfahren (vom Hofmathematiker ausgedacht): Im einem
ersten Durchgang werden alle Zellentüren geöffnet, in einem zweiten
Durchgang wird jede zweite Tür wieder geschlossen. Im dritten
Durchgang wird jede dritte Tür, wenn sie offenstand, geschlossen,
und wenn sie geschlossen war, geöffnet. Und so geht es im vierten,
fünften,... bis zum 70. Durchgang weiter. Die Frage ist, welche
Türen schließlich offenstanden, als der Geburtstag des Königs
anbrach."
Hier der Code
//IT11b
//Datum 18. Dez. 2011
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <conio.h>
using namespace std;
int main()
{
int z=2;
bool Zelle[71];
//1. Durchgang
//Alle Zelltüren aufschließen
cout<<"Durchlauf 1"<<endl;
for(int i=0; i<71; i++)
{
Zelle[i] = true;
cout<<"0";
}
cout<<endl;
//Durchgänge
for(int durchgang = 2; durchgang <= 71; durchgang++)
{
for(int i=1; i<71; i+=durchgang)
{
if(durchgang % 2 == 0) //gerade Durchgänge
{
Zelle[i] = false; //zuschließen
}
else //Ungerade Durchgänge
{
Zelle[i] = !Zelle[i]; //invertieren
}
}
// Ausgabe
cout<<"Durchlauf " <<z++<<endl;
for(int i=0; i<71; i++)
{
if(Zelle[i]==true) cout<<'O';
else cout<<'x';
}
cout<<endl;
system("PAUSE");
}
return 0;
}
Funktionieren tut an sich alles. Nur die Ausgabe ist fehlerhaft glaube ich!? Unsere Lehrerin hat die ersten 3 Durchläufe angegeben:
Durchlauf 1
00000000000000000............
Durchlauf 2
0x0x0x0x0x0x0x0x0x..........
Durchlauf 3
0xxx000xxx000xxx000...........
usw
Bei mir kommt aber das raus:
http://s7.directupload.net/images/111217/g89gxvk4.jpg
Fehlerhaft ist Durchlauf 3
Kann mir evtl jmd. auf die Sprünge helfen!? Dürfte doch eig garnicht sein!?
Liebe Grüße
PS: O steht für offene Zellentür, X für geschlossene Zellentür