Функция, которая возвращает 1 или 0 в зависимости от введенного Yes/No - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать функцию, печатающую строку-вопрос (ее аргумент), принимающую с клавиатуры только ответ “Yes” или “No” (в форме Y, N или y, n), и возвращающую 1 – при ответе “Yes” и 0 - при “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;        
}
не работает (всегда возвращает 0) и куча предупреждений (4 штуки). И еще: если не сложно, ответьте как быть, если в задании бы требовалось вводить не одну букву Y или N, а YES или NO как тогда быть? разное же количество элементов?

Решение задачи: «Функция, которая возвращает 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;
}

Объяснение кода листинга программы

  1. В функции main() объявлен массив yesorno типа char с размером 5.
  2. В функции main() пользователю предлагается ввести строку YES или NO.
  3. В функции main() с помощью функции scanf() введенная пользователем строка сохраняется в массиве yesorno.
  4. В функции main() вызывается функция YESorNO() с аргументом yesorno.
  5. В функции YESorNO() с помощью функции strcmp() сравнивается переданный аргумент x со строками YES и NO.
  6. Если x равен YES, то в функции YESorNO() возвращается 1.
  7. Если x равен NO, то в функции YESorNO() возвращается 0.
  8. Если ни одно из условий не выполнено, то в функции YESorNO() возвращается -1.
  9. В функции main() выводится возвращаемое значение функции YESorNO().
  10. В функции main() выводится символ \n.
  11. В функции main() возвращается 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5
Похожие ответы