Быстрая помощь с участием символов и если

0

Извините, если это ДЕЙСТВИТЕЛЬНО тривиально, я просто болен за то, что застрял на первом шаге, и мне нужно продолжить, и у меня нет никакой помощи нигде. Я не могу для жизни меня заставить эту функцию сотрудничать со мной. Здесь источник:

 #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" на консоли. Это меня очень раздражало.

Если мне нужно будет уточнить, я буду более чем счастлив.

Спасибо заранее за любую помощь.

  • 0
    Вы действительно должны начать с определения проблемы, а не давать какой-то загадочный и неполный код, который не работает должным образом, поскольку нет способа узнать, что он должен делать (ну, может быть, удастся сделать какое-то хорошее предположение).
  • 0
    Мне просто нужно выяснить, почему символы не работают хорошо. Просто прочитайте функцию ToDigit сверху, и это должно быть само за себя.
Показать ещё 3 комментария
Теги:

1 ответ

2

В 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";
  • 0
    ЭТО ОНО. Спасибо. Я не видел ничего подобного в своих материалах. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню