[C/C++] Bitte um Hilfe!(N-Damen Problem)

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Eiswirt, 23. Januar 2011 .

  1. 23. Januar 2011
    Bitte um Hilfe!(N-Damen Problem)

    Code:
    #include "nQueen.h"
    #include <stdio.h>
    
    int position(struct snQueen *pqn)
    {
     int row = pqn->Lastpos.ilast_r;
     int col = pqn->Lastpos.ilast_c;
     int a;
     int b;
     pqn->iHit=0;
    
     //check if queen is under attack by a queen upper
    
     for(a=row ; a > 0 ; a--)
     {
     if(pqn->iChessboard[a-1][col] == 6)
     {
     pqn->iHit = 1;
     a=-1;
     }
     }
     
     if(pqn->iHit == 0)
     {
     a =row;
     b =col;
     //check if queen is under attack by a queen diagonal right
     while(a > -1 && b < pqn->siBoardsize)
     {
     if(pqn->iChessboard[a][b] == 6)
     {
     pqn->iHit=1;
     a=-1;
     }
     a--;
     b++;
     }
     }
     
     
     if(pqn->iHit == 0)
     {
     a=row;
     b=col;
     //check if queen is under attack by a queen diagonal left
     while( a > -1 && b >= 0 )
     {
     if(pqn->iChessboard[a][b] == 6)
     {
     pqn->iHit = 1;
     a=-1;
     }
     a--;
     b--;
     }
     }
    return 0;
    }
    
    Bei jeder If anweisung steht ja der pointer auf chessboard[a]==6. 6 is im ascii code "pic",Karten und im Anschluss
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    #include "dll.h"
    #include "nQueen.h"
    
    char cresult(struct snQueen *pqn)
    { 
     
     int iRow_result;
     int iCol_result;
     
     char cQuit = 0;
    
     iRow_result=pqn->iQueencounter;
     iCol_result=0;
     
     //Big loop ends with 'e' or 'b' or Boardsize is reached
     while(cQuit != 'e' && iCol_result < pqn->siBoardsize && cQuit != 'b') 
     {
     //set queen
     pqn->Lastpos.ilast_c= iCol_result;
     pqn->Lastpos.ilast_r= pqn->iQueencounter;
    
     //check if attack
     position(pqn);
     //if queen not attack set next one
     if(pqn ->iHit == 0)
     {
     //with 6 you print this symbol what is in use
     pqn->iChessboard[pqn->iQueencounter][iCol_result] = 6;
     pqn->iQueencounter++;
     
     //if queen < Boardsize set her one row up -> check again
     if(pqn->iQueencounter != pqn->siBoardsize)
     {
     pqn->Lastpos.ilast_r = pqn->iQueencounter;
     cQuit=cresult(pqn);
     }
     else
     {
     pqn->iSumofSolution++;
     
     if(_kbhit() != 0)
     {
     cQuit=_getch();
     }
     
     //in mode manual it waits till you entered any button or 'e' 'b'
    
     if(pqn->mode == eManual)
     {
     print_result(*pqn);
     _gotoxy(65,8);
     textcolor(GREEN);
     printf("%i",pqn->iSumofSolution); ///< prints number of Solution step by step
     cQuit = _getch();
     }
     
     //of savemode is on call fct Savefile
     if(pqn->solution_save == eSave_on)
     {
     SaveFile(pqn->siBoardsize, pqn->iSumofSolution, pqn->cfilename, pqn->iChessboard);
     }
     }
     pqn->iChessboard[iRow_result][iCol_result] = 0;
     pqn->iQueencounter--; 
     
     } 
     iCol_result++;
    }
    
    return(cQuit);
    }
    in der Zeile pqn->iChessboard[pqn->iQueencounter][iCol_result] = 6; wird das Pic gedruckt!

    Nun meine Frage wieso Druck er mir das Pic ? Wo besteht der zusammenhang beim druck?
    es gibts ja kein printf?

    Danke schonmal im vorraus
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.