Bład z królem w grze w szachy

0
#include <iostream>

using namespace std;

#include <string>
#include <iostream>
using namespace std;
int wariant1 = 0;
int wariant2 = 0;
int wariant3 = 0;
int wariant4 = 0;
void szukajZnaku( string & tekst, char szukanyZnak1, char szukanyZnak2, char szukanyZnak3, char szukanyZnak4, char szukanyZnak5, char szukanyZnak6, char szukanyZnak7, char szukanyZnak8)
{ 
    size_t znalezionaPozycja1 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja1 == string::npos ){
         size_t znalezionaPozycja2 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja2 == string::npos ){
         size_t znalezionaPozycja3 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja3 == string::npos ){
         size_t znalezionaPozycja4 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja4 == string::npos ){
         size_t znalezionaPozycja5 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja5 == string::npos ){
         size_t znalezionaPozycja6 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja6 == string::npos ){
         size_t znalezionaPozycja7 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja7 == string::npos ){
         size_t znalezionaPozycja8 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja8 == string::npos ){
         
    }else{
    wariant1=wariant1+8;
    
    }    
    }else{
    wariant1=wariant1+7;
    
    }    
    }else{
    wariant1=wariant1+6;
    
    }    
    }else{
    wariant1=wariant1+5;
    
    }    
    }else{
    wariant1=wariant1+4;
    
    }    
    }else{
    wariant1=wariant1+3;
    
    }    
    }else{
     wariant1=wariant1+2;
     
    }    
    }else{
     wariant1=wariant1+1; 
     
    }
   
}
void szukajZnaku2( string & tekst, char szukanyZnak1, char szukanyZnak2, char szukanyZnak3, char szukanyZnak4, char szukanyZnak5, char szukanyZnak6, char szukanyZnak7, char szukanyZnak8)
{ 
    size_t znalezionaPozycja1 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja1 == string::npos ){
         size_t znalezionaPozycja2 = tekst.find( szukanyZnak1);
         
    if( znalezionaPozycja2 == string::npos ){
         size_t znalezionaPozycja3 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja3 == string::npos ){
         size_t znalezionaPozycja4 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja4 == string::npos ){
         size_t znalezionaPozycja5 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja5 == string::npos ){
         size_t znalezionaPozycja6 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja6 == string::npos ){
         size_t znalezionaPozycja7 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja7 == string::npos ){
         size_t znalezionaPozycja8 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja8 == string::npos ){
         
    }else{
    wariant2=wariant2+8;
    
    }    
    }else{
    wariant2=wariant2+7;
    
    }    
    }else{
    wariant2=wariant2+6;
    
    }    
    }else{
    wariant2=wariant2+5;
    
    }    
    }else{
    wariant2=wariant2+4;
    
    }    
    }else{
    wariant2=wariant2+3;
    
    }    
    }else{
     wariant2=wariant2+2;
     
    }    
    }else{
     wariant2=wariant2+1; 
     
    }
   
}
void szukajZnaku3( string & tekst, char szukanyZnak1, char szukanyZnak2, char szukanyZnak3, char szukanyZnak4, char szukanyZnak5, char szukanyZnak6, char szukanyZnak7, char szukanyZnak8)
{ 
    size_t znalezionaPozycja1 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja1 == string::npos ){
         size_t znalezionaPozycja2 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja2 == string::npos ){
         size_t znalezionaPozycja3 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja3 == string::npos ){
         size_t znalezionaPozycja4 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja4 == string::npos ){
         size_t znalezionaPozycja5 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja5 == string::npos ){
         size_t znalezionaPozycja6 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja6 == string::npos ){
         size_t znalezionaPozycja7 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja7 == string::npos ){
         size_t znalezionaPozycja8 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja8 == string::npos ){
         
    }else{
    wariant3=wariant3+8;
    
    }    
    }else{
    wariant3=wariant3+7;
    
    }    
    }else{
    wariant3=wariant3+6;
    
    }    
    }else{
    wariant3=wariant3+5;
    
    }    
    }else{
    wariant3=wariant3+4;
    
    }    
    }else{
    wariant3=wariant3+3;
    
    }    
    }else{
     wariant3=wariant3+2;
     
    }    
    }else{
     wariant3=wariant3+1; 
     
    }
   
}
void szukajZnaku4( string & tekst, char szukanyZnak1, char szukanyZnak2, char szukanyZnak3, char szukanyZnak4, char szukanyZnak5, char szukanyZnak6, char szukanyZnak7, char szukanyZnak8)
{ 
    size_t znalezionaPozycja1 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja1 == string::npos ){
         size_t znalezionaPozycja2 = tekst.find( szukanyZnak1);
         
    if( znalezionaPozycja2 == string::npos ){
         size_t znalezionaPozycja3 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja3 == string::npos ){
         size_t znalezionaPozycja4 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja4 == string::npos ){
         size_t znalezionaPozycja5 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja5 == string::npos ){
         size_t znalezionaPozycja6 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja6 == string::npos ){
         size_t znalezionaPozycja7 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja7 == string::npos ){
         size_t znalezionaPozycja8 = tekst.find( szukanyZnak1);
    if( znalezionaPozycja8 == string::npos ){
         
    }else{
    wariant4=wariant4+8;
    }    
    }else{
    wariant4=wariant4+7;
    }    
    }else{
    wariant4=wariant4+6;
    }    
    }else{
    wariant4=wariant4+5;
    }    
    }else{
    wariant4=wariant4+4;
    }    
    }else{
    wariant4=wariant4+3;
    }    
    }else{
     wariant4=wariant4+2;
    }    
    }else{
     wariant4=wariant4+1; 
    }
   
}

int main()
{
    string naszTekst;
    cin >> naszTekst;
    string naszTekst2;
    cin >> naszTekst2;
    int wariant1 = szukajZnaku( naszTekst, 'a','b','c','d','e','f','g','h');
    int wariant2 = szukajZnaku2( naszTekst, '1','2','3','4','5','6','7','8');
    int wariant3 = szukajZnaku3( naszTekst2, 'a','b','c','d','e','f','g','h');
    int wariant4 = szukajZnaku4( naszTekst2, '1','2','3','4','5','6','7','8');
    
    cout<<wariant1<<endl;
    cout<<wariant2<<endl;
    cout<<wariant3<<endl;
    cout<<wariant4<<endl;

    string listaRuchow [16];

    int petla = 0;
    int liczbaRuchow = 0;
    
    int pozycjaPoczatkowaCyfra;
    int pozycjaPoczatkowaLitera;
    
    int pozycjaKoncowaCyfra;
    int pozycjaKoncowaLitera;
    
    string literaPoczatkowa;
    string literaKoncowa;
    
    if(wariant1 == 'a'){
        pozycjaPoczatkowaLitera = 1;
    }
    else if(wariant1 == 'b'){
        pozycjaPoczatkowaLitera = 2;
    }
    else if(wariant1 == 'c'){
        pozycjaPoczatkowaLitera = 3;
    }
    else if(wariant1 == 'd'){
        pozycjaPoczatkowaLitera = 4;
    }
    else if(wariant1 == 'e'){
        pozycjaPoczatkowaLitera = 5;
    }
    else if(wariant1 == 'f'){
        pozycjaPoczatkowaLitera = 6;
    }
    else if(wariant1 == 'g'){
        pozycjaPoczatkowaLitera = 7;
    }
    else if(wariant1 == 'h'){
        pozycjaPoczatkowaLitera = 8;
    }
    
    if(wariant3 == 'a'){
        pozycjaKoncowaLitera = 1;
    }
    else if(wariant3 == 'b'){
        pozycjaKoncowaLitera = 2;
    }
    else if(wariant3 == 'c'){
        pozycjaKoncowaLitera = 3;
    }
    else if(wariant3 == 'd'){
        pozycjaKoncowaLitera = 4;
    }
    else if(wariant3 == 'e'){
        pozycjaKoncowaLitera = 5;
    }
    else if(wariant3 == 'f'){
        pozycjaKoncowaLitera = 6;
    }
    else if(wariant3 == 'g'){
        pozycjaKoncowaLitera = 7;
    }
    else if(wariant3 == 'h'){
        pozycjaKoncowaLitera = 8;
    }
    
    while(petla < 1){
        if(pozycjaPoczatkowaCyfra < pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera == pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "N";
            pozycjaPoczatkowaCyfra ++;
        }
        else if(pozycjaPoczatkowaCyfra < pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera < pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "NE";
            pozycjaPoczatkowaCyfra ++;
            pozycjaPoczatkowaLitera ++;
        }
        else if(pozycjaPoczatkowaCyfra < pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera > pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "NW";
            pozycjaPoczatkowaCyfra ++;
            pozycjaPoczatkowaLitera --;
        }
        else if(pozycjaPoczatkowaCyfra == pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera > pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "W";
            pozycjaPoczatkowaLitera --;
        }
        else if(pozycjaPoczatkowaCyfra == pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera < pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "E";
            pozycjaPoczatkowaLitera ++;
        }
        else if(pozycjaPoczatkowaCyfra > pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera == pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "S";
            pozycjaPoczatkowaCyfra --;
        }
        else if(pozycjaPoczatkowaCyfra > pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera > pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "SW";
            pozycjaPoczatkowaCyfra --;
            pozycjaPoczatkowaLitera --;
        }
        else if(pozycjaPoczatkowaCyfra > pozycjaKoncowaCyfra && pozycjaPoczatkowaLitera < pozycjaKoncowaLitera){
            liczbaRuchow ++;
            listaRuchow[liczbaRuchow - 1] = "SE";
            pozycjaPoczatkowaCyfra --;
            pozycjaPoczatkowaLitera ++;
        }
        else{
            petla = 1;
        }
    }
    
    cout << liczbaRuchow << endl;
    
    for(int i = 1; i<=liczbaRuchow; i++){
        cout<<listaRuchow[i - 1] << " ";
    }
}
0

Przecież dostałeś działające rozwiązanie 28 wierszowe, czemu drążysz to co wkleiłeś zamiast przeanalizować działające?
https://4programmers.net/Forum/C_i_C++/365579-obliczenie_ruchow_krola_w_szachach?p=1886390#id1886390

2
int wariant1 = szukajZnaku( naszTekst, 'a','b','c','d','e','f','g','h');
int wariant2 = szukajZnaku2( naszTekst, '1','2','3','4','5','6','7','8');
int wariant3 = szukajZnaku3( naszTekst2, 'a','b','c','d','e','f','g','h');
int wariant4 = szukajZnaku4( naszTekst2, '1','2','3','4','5','6','7','8');

Próbujesz do zmiennej int przypisać zwracaną wartość z funkcji. Tyle, że to funkcje typu void, które nie zwracają argumentów

Wystarczy zamienić na

szukajZnaku( naszTekst, 'a','b','c','d','e','f','g','h');
szukajZnaku2( naszTekst, '1','2','3','4','5','6','7','8');
szukajZnaku3( naszTekst2, 'a','b','c','d','e','f','g','h');
szukajZnaku4( naszTekst2, '1','2','3','4','5','6','7','8');

Zmienne wariant i tak masz podane globalnie

1 użytkowników online, w tym zalogowanych: 0, gości: 1