G.info
Messages postés1Date d'inscriptionmercredi 12 février 2014StatutMembreDernière intervention12 février 2014
-
Modifié par blux le 12/02/2014 à 16:02
G.info -
12 févr. 2014 à 23:02
bounjour j'ai apres demain une soutenance en programation et j'ai trouve un programme mais je coris qu'il est ecrie en c ++
alors je souaite comprendre chaque foction dans ce programme et me le traduire en language C et merci d'avance
voila le programme
////////////////////////////////////////////////////////////////////////////////////////////////// Object cube side ////////////////////////////////////////////////////////////////////////////////////////////////////////////////classside{public:side();side(int);voidrotateRight();voidrotateLeft();voidreturnLine(char,int&,int&,int&);voidprintLine(int);voidprint();voidchangeLine(char,int,int,int);private:int grid[10];// the grid the colors reside onint directionGrid[10];// used to determine which direction pointingint direction;// the current direction the side is pointingvoidcolor(int);// changes the color to print};
side::side(int color){// set the side all to one color, then set each direction a colorfor(int x=1; x<10; x++)
grid[x]=color;
direction=0;}void side::rotateRight(){
direction++;if(direction==4)
direction=0;}void side::rotateLeft(){
direction--;if(direction==-1)
direction=3;}void side::changeLine(char c,int x,int y,int z){// matrix to hold the grid numbers depending on what direction side is pointingint matrix[4][9]={{1,2,3,4,5,6,7,8,9},{7,4,1,8,5,2,9,6,3},{9,8,7,6,5,4,3,2,1},{3,6,9,2,5,8,1,4,7}};// changes the row/column to the new colorsswitch(c){case'1':
grid[matrix[direction][0]]=x;
grid[matrix[direction][1]]=y;
grid[matrix[direction][2]]=z;break;case'2':
grid[matrix[direction][3]]=x;
grid[matrix[direction][4]]=y;
grid[matrix[direction][5]]=z;break;case'3':
grid[matrix[direction][6]]=x;
grid[matrix[direction][7]]=y;
grid[matrix[direction][8]]=z;break;case'a':case'A':
grid[matrix[direction][0]]=x;
grid[matrix[direction][3]]=y;
grid[matrix[direction][6]]=z;break;case'b':case'B':
grid[matrix[direction][1]]=x;
grid[matrix[direction][4]]=y;
grid[matrix[direction][7]]=z;break;case'c':case'C':
grid[matrix[direction][2]]=x;
grid[matrix[direction][5]]=y;
grid[matrix[direction][8]]=z;break;}}void side::returnLine(char c,int& x,int& y,int& z){// matrix to hold the grid numbers depending on what direction side is pointingint matrix[4][9]={{1,2,3,4,5,6,7,8,9},{7,4,1,8,5,2,9,6,3},{9,8,7,6,5,4,3,2,1},{3,6,9,2,5,8,1,4,7}};// returns the color of that row/columnswitch(c){case'1':
x=grid[matrix[direction][0]];
y=grid[matrix[direction][1]];
z=grid[matrix[direction][2]];break;case'2':
x=grid[matrix[direction][3]];
y=grid[matrix[direction][4]];
z=grid[matrix[direction][5]];break;case'3':
x=grid[matrix[direction][6]];
y=grid[matrix[direction][7]];
z=grid[matrix[direction][8]];break;case'a':case'A':
x=grid[matrix[direction][0]];
y=grid[matrix[direction][3]];
z=grid[matrix[direction][6]];break;case'b':case'B':
x=grid[matrix[direction][1]];
y=grid[matrix[direction][4]];
z=grid[matrix[direction][7]];break;case'c':case'C':
x=grid[matrix[direction][2]];
y=grid[matrix[direction][5]];
z=grid[matrix[direction][8]];break;}}void side::printLine(int x){int matrix[4][9]={{1,2,3,4,5,6,7,8,9},{7,4,1,8,5,2,9,6,3},{9,8,7,6,5,4,3,2,1},{3,6,9,2,5,8,1,4,7}};for(int y=x*3; y<x*3+3; y++){color(grid[matrix[direction][y]]);
cout<<char(178)<<char(178)<<char(178)<<COLOR::NORMAL;}}void side::print(){// matrix to hold the grid numbers depending on what direction side is pointingint matrix[4][9]={{1,2,3,4,5,6,7,8,9},{7,4,1,8,5,2,9,6,3},{9,8,7,6,5,4,3,2,1},{3,6,9,2,5,8,1,4,7}};
cout<<"\t\t A B C"<<endl<<endl;for(int x=0; x<2; x++){
cout<<((x==0)?"\t\t 1 ":"\t\t ");for(int y=0; y<3; y++){color(grid[matrix[direction][y]]);
cout<<char(178)<<char(178)<<char(178)<<" "<<COLOR::NORMAL;}
cout<<endl;}
cout<<endl;for(x=0; x<2; x++){
cout<<((x==0)?"\t\t 2 ":"\t\t ");for(int y=3; y<6; y++){color(grid[matrix[direction][y]]);
cout<<char(178)<<char(178)<<char(178)<<" "<<COLOR::NORMAL;}
cout<<endl;}
cout<<endl;for(x=0; x<2; x++){
cout<<((x==0)?"\t\t 3 ":"\t\t ");for(int y=6; y<9; y++){color(grid[matrix[direction][y]]);
cout<<char(178)<<char(178)<<char(178)<<" "<<COLOR::NORMAL;}
cout<<endl;}
cout<<COLOR::NORMAL<<endl<<endl;}void side::color(int c){switch(c){case1: cout<<COLOR::GREEN;break;case2: cout<<COLOR::RED;break;case3: cout<<COLOR::BLUE;break;case4: cout<<COLOR::YELLOW;break;case5: cout<<COLOR::WHITE;break;case6: cout<<COLOR::PURPLE;break;}}////////////////////////////////////////////////////////////////////////////////////////////////// Object cube /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////classcube{public:cube();voidrotate(char);voidprintfront();voidtwist(string);voidmix();voidprintAll();private:
vector <side> cubeVec;};
cube::cube(){// create six new sides and set the directions for each sidesideempty(0);sidegreenside(1);sideredside(2);sideblueside(3);sideyellowside(4);sidewhiteside(5);sidepurpleside(6);// add to the vector of sides
cubeVec.push_back(empty);
cubeVec.push_back(greenside);
cubeVec.push_back(redside);
cubeVec.push_back(blueside);
cubeVec.push_back(yellowside);
cubeVec.push_back(whiteside);
cubeVec.push_back(purpleside);}void cube::printfront(){
cubeVec[1].print();}void cube::printAll(){int x,y;
cout<<" A B C"<<endl;for(x=3; x>=2; x--){for(y=0; y<3; y++){
cout<<" ";
cubeVec[x].printLine(y);
cout<<endl;
cout<<" ";
cubeVec[x].printLine(y);
cout<<endl;}
cout<<endl;}for(x=0; x<3; x++){
cout<<x+1<<" ";
cubeVec[5].printLine(x);
cout<<" ";
cubeVec[1].printLine(x);
cout<<" ";
cubeVec[6].printLine(x);
cout<<endl<<" ";
cubeVec[5].printLine(x);
cout<<" ";
cubeVec[1].printLine(x);
cout<<" ";
cubeVec[6].printLine(x);
cout<<endl;}
cout<<endl;for(x=0; x<3; x++){
cout<<" ";
cubeVec[4].printLine(x);
cout<<endl;
cout<<" ";
cubeVec[4].printLine(x);
cout<<endl;}
cout<<endl;}void cube::rotate(char c){// rotates the cube in the direction statedsideoldcolor=cubeVec[1];switch(c){case'u':case'U':
cubeVec[1]=cubeVec[4];
cubeVec[4]=cubeVec[3];
cubeVec[3]=cubeVec[2];
cubeVec[2]=oldcolor;
cubeVec[5].rotateLeft();
cubeVec[6].rotateRight();break;case'd':case'D':
cubeVec[1]=cubeVec[2];
cubeVec[2]=cubeVec[3];
cubeVec[3]=cubeVec[4];
cubeVec[4]=oldcolor;
cubeVec[6].rotateLeft();
cubeVec[5].rotateRight();break;case'r':case'R':
cubeVec[1]=cubeVec[5];
cubeVec[5]=cubeVec[3];
cubeVec[5].rotateRight();
cubeVec[5].rotateRight();
cubeVec[3]=cubeVec[6];
cubeVec[3].rotateRight();
cubeVec[3].rotateRight();
cubeVec[6]=oldcolor;
cubeVec[2].rotateLeft();
cubeVec[4].rotateRight();break;case'l':case'L':
cubeVec[1]=cubeVec[6];
cubeVec[6]=cubeVec[3];
cubeVec[6].rotateRight();
cubeVec[6].rotateRight();
cubeVec[3]=cubeVec[5];
cubeVec[3].rotateRight();
cubeVec[3].rotateRight();
cubeVec[5]=oldcolor;
cubeVec[4].rotateLeft();
cubeVec[2].rotateRight();break;}}void cube::twist(strings){// twists a row or column in the direction statedif(toupper(s[0])!='A'&&toupper(s[0])!='B'&&toupper(s[0])!='C'&&toupper(s[0])!='1'&&toupper(s[0])!='2'&&toupper(s[0])!='3'){return;}if((toupper(s[0])=='A'||toupper(s[0])=='B'||toupper(s[0])=='C')&&toupper(s[1])!='U'&&toupper(s[1])!='D'){return;}if((toupper(s[0])=='1'||toupper(s[0])=='2'||toupper(s[0])=='3')&&toupper(s[1])!='R'&&toupper(s[1])!='L'){return;}int x, y, z;int dx, dy, dz;
cubeVec[1].returnLine(s[0],x,y,z);if(toupper(s[0])=='A'||toupper(s[0])=='B'||toupper(s[0])=='C'){if(toupper(s[1])=='U'){
cubeVec[2].returnLine(s[0],dx,dy,dz);
cubeVec[2].changeLine(s[0],x,y,z);
cubeVec[3].returnLine(s[0],x,y,z);
cubeVec[3].changeLine(s[0],dx,dy,dz);
cubeVec[4].returnLine(s[0],dx,dy,dz);
cubeVec[4].changeLine(s[0],x,y,z);
cubeVec[1].changeLine(s[0],dx,dy,dz);if(toupper(s[0])=='A')
cubeVec[5].rotateLeft();if(toupper(s[0])=='C')
cubeVec[6].rotateRight();}elseif(toupper(s[1])=='D'){
cubeVec[4].returnLine(s[0],dx,dy,dz);
cubeVec[4].changeLine(s[0],x,y,z);
cubeVec[3].returnLine(s[0],x,y,z);
cubeVec[3].changeLine(s[0],dx,dy,dz);
cubeVec[2].returnLine(s[0],dx,dy,dz);
cubeVec[2].changeLine(s[0],x,y,z);
cubeVec[1].changeLine(s[0],dx,dy,dz);if(toupper(s[0])=='A')
cubeVec[5].rotateRight();if(toupper(s[0])=='C')
cubeVec[6].rotateLeft();}}elseif(toupper(s[0])=='1'||toupper(s[0])=='2'||toupper(s[0])=='3'){if(toupper(s[1])=='R'){
cubeVec[6].returnLine(s[0],dx,dy,dz);
cubeVec[6].changeLine(s[0],x,y,z);if(toupper(s[0])=='1'){
cubeVec[3].returnLine('3',z,y,x);
cubeVec[3].changeLine('3',dz,dy,dx);}elseif(toupper(s[0])=='3'){
cubeVec[3].returnLine('1',z,y,x);
cubeVec[3].changeLine('1',dz,dy,dx);}else{
cubeVec[3].returnLine('2',z,y,x);
cubeVec[3].changeLine('2',dz,dy,dx);}
cubeVec[5].returnLine(s[0],dx,dy,dz);
cubeVec[5].changeLine(s[0],x,y,z);
cubeVec[1].changeLine(s[0],dx,dy,dz);if(toupper(s[0])=='1')
cubeVec[2].rotateLeft();if(toupper(s[0])=='3')
cubeVec[4].rotateRight();}elseif(toupper(s[1])=='L'){
cubeVec[5].returnLine(s[0],dx,dy,dz);
cubeVec[5].changeLine(s[0],x,y,z);if(toupper(s[0])=='1'){
cubeVec[3].returnLine('3',z,y,x);
cubeVec[3].changeLine('3',dz,dy,dx);}elseif(toupper(s[0])=='3'){
cubeVec[3].returnLine('1',z,y,x);
cubeVec[3].changeLine('1',dz,dy,dx);}else{
cubeVec[3].returnLine('2',z,y,x);
cubeVec[3].changeLine('2',dz,dy,dx);}
cubeVec[6].returnLine(s[0],dx,dy,dz);
cubeVec[6].changeLine(s[0],x,y,z);
cubeVec[1].changeLine(s[0],dx,dy,dz);if(toupper(s[0])=='1')
cubeVec[2].rotateRight();if(toupper(s[0])=='3')
cubeVec[4].rotateLeft();}}}void cube::mix(){// randomly mixes the cubefor(int x=0; x<100; x++){if(rand()%100<20){switch(rand()%4){case0:rotate('u');break;case1:rotate('d');break;case2:rotate('r');break;case3:rotate('l');break;}}else{switch(rand()%6){case0:twist("1r");break;case1:twist("2r");break;case2:twist("3r");break;case3:twist("ad");break;case4:twist("bd");break;case5:twist("cd");break;}}}}
je vous remerciez de me repondre
mais j'ai compris la plus part des fonction
j'ai besoin de comprendre c'est quoi l'utilite de la fonction grid () dans ce programme et aussi la foction cout
12 févr. 2014 à 23:02
mais j'ai compris la plus part des fonction
j'ai besoin de comprendre c'est quoi l'utilite de la fonction grid () dans ce programme et aussi la foction cout