В этом куске кода для «системы управления контактами» у меня возникают трудности с получением нужного результата для линии. Как правило, во время этой одной части, когда вы добавляете новый контакт, он просит вас «пожалуйста, введите номер квартиры», как показано ниже:
if (yes() == 1)
{
printf("Please enter the contact's apartment number: ");
address->apartmentNumber = getInt();
if (address->apartmentNumber > 0)
{
}
else
{
printf("*** INVALID INTEGER *** <Please enter an integer>: ");
address->apartmentNumber = getInt();
}
}
else
{
address->apartmentNumber = 0;
}
Теперь, согласно моему заданию, вы должны ввести слово (вместо числа, получить его?) "Зубр", которое выводит:
* Недействительный INTEGER * Пожалуйста, введите целое число:
Для контекста эта часть работает абсолютно нормально. Тем не менее, вы должны указать целое число "-1200", которое должно вызвать приглашение
* Неверный номер квартиры * Пожалуйста, введите положительное число:
Именно в этой части у меня возникла проблема, потому что, проще говоря, я не знаю, где ее поставить, в выражении if или за ее пределами. Я не уверен, и любезно хотел бы помочь с этим.
Я попытался исправить проблему сам, но это просто дает мне двойную ошибку Invalid integer вместо этого правильного оператора Invalid number number. Вот моя (неудачная) попытка:
if (yes() == 1)
{
printf("Please enter the contact's apartment number: ");
address->apartmentNumber = getInt();
if (address->apartmentNumber > 0)
{
}
else
{
printf("*** INVALID INTEGER *** <Please enter an integer>: ");
address->apartmentNumber = getInt();
}
if (address->apartmentNumber < 0)
{
}
else
{
printf("*** INVALID APARTMENT NUMBER *** <Please enter a positive number>: ");
address->apartmentNumber = getInt();
}
else
{
address->apartmentNumber = 0;
}
РЕДАКТИРОВАТЬ: Для тех, кто просил код для getInt () и yes (), здесь:
GetInt ()
int getInt(void)
{
int num;
char nl;
scanf("%d%c", &num, &nl);
while (nl != '\n') {
clearKeyboard();
printf("*** INVALID INTEGER *** <Please enter an integer>: ");
scanf("%d%c", &num, &nl);
}
return num;
}
и да ():
int yes(void)
{
int yesno, flag;
char c, nl;
scanf("%c%c", &c, &nl);
do {
if (nl != '\n') {
clearKeyboard();
printf("*** INVALID ENTRY *** <Only (Y)es or (N)o are acceptable>: ");
flag = 1;
scanf("%c%c", &c, &nl);
}
else if (c != 'Y' && c != 'y' && c != 'N' && c != 'n') {
printf("*** INVALID ENTRY *** <Only (Y)es or (N)o are acceptable>: ");
flag = 1;
scanf("%c%c", &c, &nl);
}
else if (nl == '\n' && (c == 'Y' || c == 'y' || c == 'N' || c == 'n'))
{
flag = 0;
}
} while (flag == 1);
if (c == 'Y' || c == 'y') {
yesno = 1;
}
else {
yesno = 0;
}
return yesno;
}