Извините, если это ДЕЙСТВИТЕЛЬНО тривиально, я просто болен за то, что застрял на первом шаге, и мне нужно продолжить, и у меня нет никакой помощи нигде. Я не могу для жизни меня заставить эту функцию сотрудничать со мной. Здесь источник:
#include <iostream>
using namespace std;
void ReadDials(){
};
void ToDigit(char *x){
if (*x = 'a'){*x = '54';}
else if (*x = 'A'){*x = 2;}
else if (*x = 'b'){*x = 3;}
else(*x = 4);
};
int main()
{
char one;
char two;
char three;
cin >> one;
ToDigit(&one);
cout << "one is: " << one << endl;
system("PAUSE");
}
То, что я пробовал: чередуя между фактическим числом 2 и указателем ascii 2, который, я считаю, "32", я использовал ==
чтобы попробовать, я сделал все, о чем я могу думать, и знаю, что я над мышлением. Дело в том, что эта функция преобразует пользовательский ввод в номера для телефонного дозвона.
Проблемы варьируются от чисел, не синхронизирующихся с операторами if, и видя лицо ": D" на консоли. Это меня очень раздражало.
Если мне нужно будет уточнить, я буду более чем счастлив.
Спасибо заранее за любую помощь.
В if (*x = 'a')
, =
задание. Вы хотите ==
для сравнения. Кроме того, "54" не является символьным значением.
void ToDigit(char *x){
if (*x == 'a') { *x = '54'; } /* what is this supposed to do? */
else if (*x == 'A') {*x = 2; }
else if (*x == 'b') {*x = 3; }
else { *x = 4 };
};
Похоже, вы пытаетесь использовать x
как вход и выход. Позвольте отступить на минутку. Пусть вместо этого напишет функцию, которая принимает один char
и возвращает целое число. Это был бы канонический способ взятия char
и получения от него числа.
int ToDigit(char x){
if (x == 'a') { return 54; }
if (x == 'A') { return 2; }
if (x == 'b') { return 3; }
return 4 ;
};
Чтобы использовать эту форму функции, вы должны присвоить возвращаемое значение переменной типа int
в этом случае.
char my_input;
int mapped_number;
std::cin >> my_input;
mapped_number = ToDigit(my_input);
std::cout << my_input << " maps to " << mapped_number << ".\n";