Что должна включать в себя моя функция для возврата значения -1.0, если задан неправильный ввод? - PullRequest
0 голосов
/ 08 октября 2019

Вот инструкции проекта:

"Напишите программу на C, которая включает функцию типа double с именем divmaster, принимает два двойных аргумента (вы должны написать функцию divmaster). При вызове ваша функциявернет первый аргумент, разделенный на второй аргумент. Убедитесь, что ваша функция включает в себя оператор решения, чтобы она не могла делиться на 0 - если вызывающая сторона пытается разделить на 0, функция должна вернуть значение -1.0. Ваша программадолжен вызвать divmaster, затем отобразить значение, возвращаемое функцией. Тщательно протестируйте свою функцию, затем отправьте вывод, используя аргументы 22 и 3. Помните, что структурированная функция должна иметь только один оператор возврата. "

Я думаю,У меня большая часть программы правильная, за исключением того, что я испытываю трудности с функциональной частью. Мы не узнали, если еще заявления, поэтому я не могу их использовать. Мои мысли были условным оператором while для возврата значения -1,0, если введено 0. Любые мысли будут оценены.

Вот код, который я до сих пор.

#include <stdio.h>
double divmaster(double x, double y);

int main(void)
{
    double i, j, value;

    printf("Please enter two numbers ");
    printf("the first number will be divded by the second. The value ");
    printf("will then be returned. Enter q to quit\n");

    while (scanf("%d%d", &i, &j) == 2)
    {
        value = divmaster(i, j);
        printf("%d divded by %d is %.6f\n", i, j, value);
        printf("Please enter the next paid of numbers or q to quit.\n");
    }

    return 0;
}

    double divmaster(double x, double y)
    {

        while (y <= 0);
        printf("-1.0");


    }

}

1 Ответ

0 голосов
/ 09 октября 2019

Ваш код имеет несколько основных проблем:

  1. Неверный формат строки scanf и printf, %d формат принимает целое число, а в качестве аргумента вы ставите doubleдвойной формат %lf
  2. Вы должны использовать разделитель между форматами.
  3. В вашей функции divmaster отсутствует оператор return.

Воткак должен выглядеть ваш код после исправления.

#include <stdio.h>
double divmaster(double x, double y);

int main(void)
{
    double i, j, value;

    printf("Please enter two numbers ");
    printf("the first number will be divded by the second. The value ");
    printf("will then be returned. Enter q to quit\n");

    while (scanf("%lf %lf", &i, &j) == 2)
    {
        value = divmaster(i, j);
        printf("%lf divded by %lf is %.6lf\n", i, j, value);
        printf("Please enter the next pair of numbers or q to quit.\n");
    }

    return 0;
}

double divmaster(double x, double y)
{

    if (0.0f == y)
        return -1.0f;
    else
        return x / y;
}

Если вы не можете использовать оператор if else, также возможно использование оператора while

while (0.0f == y)
    return -1.0f;

return x/y;

Правильный формат для каждого типаопределены в руководстве для каждой из этих функций
http://man7.org/linux/man-pages/man3/printf.3.html
http://man7.org/linux/man-pages/man3/scanf.3.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...