Функция, которая возвращает 1 или 0 в зависимости от введенного Yes/No - C (СИ)
Формулировка задачи:
Написать функцию, печатающую строку-вопрос (ее аргумент), принимающую с клавиатуры только ответ “Yes” или “No” (в форме Y, N или y, n), и возвращающую 1 – при ответе “Yes” и 0 - при “No”
не работает (всегда возвращает 0) и куча предупреждений (4 штуки).
И еще: если не сложно, ответьте как быть, если в задании бы требовалось вводить не одну букву Y или N, а YES или NO как тогда быть? разное же количество элементов?
#include <stdio.h>
int YESorNO (char []);
int main ()
{
char i;
char yesorno [1];
printf ("Введите YES (Y) или NO (N)\n");
scanf ("%c", &yesorno[i]);
YESorNO (&i);
printf ("Возвращаемое значение %d", YESorNO (i));
}
int YESorNO (char *x)
{
char Y, N;
if (x==Y)
return 1;
if (x==N)
return 0;
}Решение задачи: «Функция, которая возвращает 1 или 0 в зависимости от введенного Yes/No»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
int YESorNO (const char* x);
int main ()
{
/* самая длинная строка, которую предлагается ввести пользователю: "YES"
для её хранения достаточно массива из 4 элементов(3 буквы + признак конца строки(символ '\0'))
НО, для того чтобы не считать за правильный ввод строки вроде "YES1, "YESabc" и т.д,
заведём массив не на 4, а на 5 элементов
*/
char yesorno[5];
printf("Введите YES или NO\n");
/* ввод строки(из всех введённых с клавиатуры символов в массив yesorno попадут только первые четыре) */
scanf("%4s", yesorno);
printf("Возвращаемое значение %d\n", YESorNO(yesorno));
return 0;
}
int YESorNO(const char* x)
{
if(strcmp(x, "YES") == 0)
return 1;
if(strcmp(x, "NO") == 0)
return 0;
return -1;
}
Объяснение кода листинга программы
- В функции main() объявлен массив yesorno типа char с размером 5.
- В функции main() пользователю предлагается ввести строку
YESилиNO. - В функции main() с помощью функции scanf() введенная пользователем строка сохраняется в массиве yesorno.
- В функции main() вызывается функция YESorNO() с аргументом yesorno.
- В функции YESorNO() с помощью функции strcmp() сравнивается переданный аргумент x со строками
YESиNO. - Если x равен
YES, то в функции YESorNO() возвращается 1. - Если x равен
NO, то в функции YESorNO() возвращается 0. - Если ни одно из условий не выполнено, то в функции YESorNO() возвращается -1.
- В функции main() выводится возвращаемое значение функции YESorNO().
- В функции main() выводится символ
\n. - В функции main() возвращается 0.