Я хочу получить координаты x y в одну строку.
Но x - это char
тип [ a до j ], включая a и j ; y имеет тип int
[ 1 до 10 ], включая 1 и 10 .
Пример: cout>>"Enter coordinates ex[e4] then press enter/n";
Пользователь должен написать: d5 и нажать Enter.
Затем я должен отделить две буквы ввода (символ) и число.
Я думаю, что это можно сделать с помощью getline
или getchar
Может кто-нибудь объяснить мне, если это возможно и как это сделать?
Примечание что пара letternumber (без пробела, например: f3) должна быть разделена для двух разных функций, одна из которых основана на char
, тип другой основывается на int
type
Спасибо за все ответы. Не волнуйтесь, вы не решаете мою домашнюю работу, я программирую небольшую военно-морскую битву :-) Я понятия не имел, как это сделать, все, что я знаю, это просто научный c опыт.
Здесь код: эта функция проверяет значение char
:
int nx;
nx=x; //Trasfromazione char x in int (NumeroX)
switch(x) {
case 97 ... 106:{ //Codice ascii a,b,c...
return true;
break;
}
default:{
cout<<"\n---Lettera non valida\a\n\n";
return false;
break;
}
}
}
эта функция проверяет значение int
:
bool checknum(int y){
bool v=false;
switch(y) {
case 1 ... 10 :{
v=true;
break;
}
default:{
cout<<"\n---Numero non valido\a\n\n";
return false;
break;
}
}
return v;
}
, и это код которая вызывает две функции:
do{
cout<<"\n-Inserisci lettera numero\n>";
cin>>x>>y;
}while(((checknum(y))==false) or((checklett(x))==false) );
, если мой ввод состоит из двух букв, это вызывает вечное l oop
05-02-2020 дд-мм-гггг Редактировать для @ Tedlyngmo
С этим кодом, похоже, работает:
do{
cout<<"\n-Inserisci lettera e numero\n>";
cin>>x>>y;
cin.clear();
}while((checklett(x)==false)or(checknum(y)==false));
знаете почему?