Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Exercice 21 Placement sans recouvrement tableaux
- //Bataille Navale p.e
- #include <iostream>
- #include <vector>
- #include <stdlib.h>
- using namespace std;
- typedef vector <vector<bool>> Grille;
- void afficheGrille (Grille const &grille);
- bool remplitGrille (Grille &grille,
- unsigned int ligne,unsigned int colonne,
- char direction,unsigned int longueur);
- int main (){
- int x,y,taille;
- char dir;
- Grille grille(10,std::vector<bool>(10,false));
- cout <<"Entrez coord. x: ";
- cin >>x;
- cout <<"Entrez coord. y: ";
- cin >>y;
- cout <<"Entrez direction (N,S,E,O) :";
- cin >>dir;
- cout <<"Entrez taille : ";
- cin >>taille;
- cout <<"Placement en ("<<x<<","<<y<<") direction "<<dir<<" longueur "<<taille<<" -> ";
- remplitGrille (grille,x,y,dir,taille) ? cout<<" succes ": cout <<" ECHEC ";
- afficheGrille(grille);
- return 0;
- }
- //----------------------------------------------------------------------
- bool remplitGrille (Grille &grille,
- unsigned int ligne,unsigned int colonne,
- char direction,unsigned int longueur){
- //unsigned int i(0);
- int i(0);
- if (ligne*colonne <0|| ligne>=grille.size() || colonne>=grille[ligne].size()){return false;}
- if (longueur !=0){longueur--;}
- //Nord
- if ( direction=='N' && (ligne-longueur) >=0 ){
- i=ligne;
- do {
- grille[i][colonne]=true;
- i--;
- }while ( i>=0 && i>= static_cast <int> (ligne-longueur));
- return true;
- }
- //Sur
- if (direction=='S' && (ligne+longueur)<grille.size() ){
- i=ligne;
- do {
- grille[i][colonne]=true;
- i++;
- }while (i < static_cast <int>(grille.size()) && i<= static_cast <int>(ligne+longueur));
- return true;
- }
- //Oest
- if (direction=='O' &&(colonne -longueur )>=0){
- i=colonne;
- do {
- grille[ligne][i]=true;
- i--;
- }while (i>=0 && i>=static_cast <int> (colonne-longueur));
- return true;
- }
- //Est
- if (direction=='E' &&(colonne+longueur) <grille[ligne].size() ){
- i=colonne;
- do {
- grille[ligne][i]=true;
- i++;
- }while (i <static_cast <int>(grille[ligne].size()) && i<= static_cast <int>(colonne+longueur));
- return true;
- }
- return false;
- }
- void afficheGrille (Grille const &grille){
- cout <<endl;
- for (size_t l=0;l<grille.size();l++){
- for (size_t c=0;c<grille[l].size();c++){
- cout <<grille[l][c];
- }
- cout <<endl;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement