Я новичок в обучающих функциях. Я в основном занимаюсь физическим упражнением для колледжа, в который пользователь входит две буквы, например, aj, а затем буква одна, выше буквы два в алфавите и наоборот. Вопрос в том, что это должна быть функция bool.У меня возникают проблемы с функцией bool, когда пользователь вводит две буквы и выводит, какая буква самая высокая на алфавите.
4. a. Напишите прототип функции IsAlphaHigher, которой может быть передана пара символов , и которая вернет логическое значение, указывающее, является ли первый символ более высоким по алфавиту. (Примечание 'a' больше, чем 'z') b. Напишите определение функции IsAlphaHigher c. Напишите тестовое приложение, которое будет использовать функцию IsAlphaHigher.
Теперь легко, если пользователь вводит что-то вроде n или заглавной буквы A. Какая бывшая буква была самой низкой в таблице ASCII, она выше на алфавите. Но как насчет того, что пользователь вводит что-то вроде букв в верхнем регистре R в нижнем регистре, например, верхний регистр R равен 82 в таблице ASCII, а малый a равен 97.
Я понял, что если любая маленькая буква письма - любая прописная буква = больше 32, то верхняя буква буквы выше на алфавите.
Логика заключается в том, что a - A = 32, b - B = 32, q - Q = 32 и т. Д. Так что все выше 32 буквы верхнего регистра выше, чем нижний регистр, что-то ниже 32, нижнее случай выше буквы верхнего регистра.
Я использовал ряд утверждений if, чтобы обойти это, но я получаю сообщение об ошибке, и я не совсем уверен, откуда он пришел или почему так я действительно ценю некоторую помощь.
спасибо.
#include <iostream>
using namespace std;
bool IsAlphaHigher(char letterOne, char letterTwo);
int main()
{
char letter1, letter2;
cout << "Enter two letters ";
cin >> letter1 >> letter2;
IsAlphaHigher(letter1, letter2);
if (IsAlphaHigher(letter1,letter2) == 1)
cout << "letter one is higher on the alphabet than letter two ";
else
cout << "letter two is higher on the alphabet than letter one ";
}
bool IsAlphaHigher(char letterOne, char letterTwo)
{
bool status;
if (letterOne < 90 && letterTwo < 90)
{
if (letterOne < letterTwo)
status = true;
else
status = false;
}
if (letterOne > 90 && letterTwo < 90)
{
if (letterOne < letterTwo)
status = true;
else
status = false;
}
if (letterOne < 90 && letterTwo > 90)
{
if (letterTwo - letterOne <= 32)
status = true;
else
status = false;
}
if (letterOne > 90 && letterTwo < 90)
{
if (letterOne - letterTwo <= 32)
status = true;
else
status = false;
}
return status;
}
Когда я строй, он не говорит, что нет никаких ошибок, но когда я иду в оболочку командной строки и введите в двух письмах он дает мне «время сбой проверки Run # 3 T» я понятие не имею, почему.
Это моя первая логическая функция, поэтому я думаю, что я что-то делаю неправильно. Любые советы о том, куда я иду, будут весьма признательны.
Вы можете использовать 'toupper()' или 'tolower()' для преобразования символов в один и тот же регистр перед их сопоставлением. – Barmar
Используйте свой отладчик, чтобы узнать, где происходит ошибка. – Barmar
Редко необходимо писать 'if (condition) status = true; else status = false; '.Просто напишите 'status = condition;'. И поскольку вы просто возвращаете статус, вы можете просто выполнить условие возврата. – Barmar