Advertisement
AntonioVillanueva

Exercice 21 Placement sans recouvrement tableaux

Nov 26th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.34 KB | None | 0 0
  1. //Exercice 21 Placement sans recouvrement tableaux
  2. //Bataille Navale p.e
  3. #include <iostream>
  4. #include <vector>
  5. #include <stdlib.h>  
  6.  
  7. using namespace std;
  8. typedef vector <vector<bool>> Grille;
  9.  
  10. void afficheGrille (Grille const &grille);
  11.  
  12. bool remplitGrille (Grille &grille,
  13.                     unsigned int ligne,unsigned int colonne,
  14.                     char direction,unsigned int longueur);
  15. int main (){
  16.     int x,y,taille;
  17.     char dir;
  18.     Grille grille(10,std::vector<bool>(10,false));
  19.    
  20.     cout <<"Entrez coord. x: ";
  21.     cin >>x;
  22.     cout <<"Entrez coord. y: ";
  23.     cin >>y;
  24.    
  25.     cout <<"Entrez direction (N,S,E,O) :";
  26.     cin >>dir;
  27.    
  28.     cout <<"Entrez taille : ";
  29.     cin >>taille;
  30.    
  31.     cout <<"Placement en ("<<x<<","<<y<<") direction "<<dir<<" longueur "<<taille<<" -> ";
  32.     remplitGrille (grille,x,y,dir,taille) ? cout<<" succes ": cout <<" ECHEC ";
  33.     afficheGrille(grille);
  34.  
  35.     return 0;
  36. }
  37. //----------------------------------------------------------------------
  38.  
  39. bool remplitGrille (Grille &grille,
  40.                     unsigned int ligne,unsigned int colonne,
  41.                     char direction,unsigned int longueur){
  42.     //unsigned int i(0);
  43.      int i(0);
  44.  
  45.     if (ligne*colonne <0|| ligne>=grille.size() || colonne>=grille[ligne].size()){return false;}
  46.     if (longueur !=0){longueur--;} 
  47.            
  48. //Nord
  49.     if ( direction=='N' && (ligne-longueur) >=0 ){
  50.         i=ligne;
  51.         do {
  52.             grille[i][colonne]=true;
  53.             i--;
  54.         }while ( i>=0 && i>= static_cast <int> (ligne-longueur));      
  55.         return true;
  56.         }
  57.        
  58. //Sur
  59.     if (direction=='S' && (ligne+longueur)<grille.size() ){    
  60.         i=ligne;
  61.         do {
  62.             grille[i][colonne]=true;
  63.             i++;
  64.         }while (i < static_cast <int>(grille.size()) && i<= static_cast <int>(ligne+longueur));    
  65.         return true;               
  66.         }
  67.        
  68. //Oest
  69.     if (direction=='O' &&(colonne -longueur )>=0){     
  70.         i=colonne;
  71.         do {
  72.             grille[ligne][i]=true;
  73.             i--;
  74.         }while (i>=0 && i>=static_cast <int> (colonne-longueur));
  75.         return true;               
  76.         }
  77.        
  78. //Est
  79.     if (direction=='E' &&(colonne+longueur) <grille[ligne].size() ){   
  80.         i=colonne;
  81.         do {
  82.             grille[ligne][i]=true;
  83.             i++;
  84.         }while (i <static_cast <int>(grille[ligne].size()) && i<= static_cast <int>(colonne+longueur));    
  85.         return true;
  86.         }
  87.  
  88. return false;                      
  89. }
  90.  
  91. void afficheGrille (Grille const &grille){
  92.     cout <<endl;
  93.     for (size_t l=0;l<grille.size();l++){
  94.         for (size_t c=0;c<grille[l].size();c++){
  95.             cout <<grille[l][c];
  96.         }
  97.             cout <<endl;
  98.     }
  99. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement