Wczytywanie dwóch zmiennych int i char jednocześnie

Wczytywanie dwóch zmiennych int i char jednocześnie
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam problem z pewną częścią mojego kodu, chciałabym żeby użytkownik mógł wprowadzić pole pionka, którym chce się poruszyć, ale tak aby to było za jednym razem tzn np a5 lub 5a. Potem litery muszę zamienić (z pomocą ASCII) na cyfry, a cyfry zostawić bez zmian i wykorzystać te dane do odnalezienia odpowiedniej wartości tablicy.
POMOCY :)

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Jeżeli miałbyś tablicę znaków

Kopiuj
char input[] = {'a', '5', '\0'};

To mógłbyś zrobić

Kopiuj
int column = input[0] - 'a';

I wtedy gdy wpiszesz a to dostaniesz column jako 0, b to 1, c to 2 i tak dalej.

O to Ci chodzi?

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
int coulmCharToNumber(char ch)
{
    ch = std::tolower(ch);
    if (std::islower(ch)) {
         return ch - 'a';
    }
    throw invalid_argument("column name out of range");
}
…
char charColumn;
int row;

istringstream data("a5");

if (data >> row) {
     if (data >> charColumn) {
         SelectField(coulmCharToNumber(charColumn), row);
     } else {
         throw invalid_argument("invalid move data");
     }
} else {
     data.clear();
     if (data >> charColumn >> row)  {
         SelectField(coulmCharToNumber(charColumn), row);
     } else {
         throw invalid_argument("invalid move data");
     }
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.