Как вызывать функции внутри функции - PullRequest
0 голосов
/ 05 апреля 2019

Я написал код, используя некоторые функции. В функции getType у пользователя запрашивается ввод, если для ввода задано v или V, должна быть запущена функция getHeight, а затем функция vArea. Если ввод h или H, должна быть запущена функция hArea. Если есть какой-либо другой ввод, код должен отобразить «неверный ввод», а затем вернуться к функции getType и снова запросить ввод у пользователя.

Мне нужно, чтобы значение, вычисленное с помощью hArea или vArea, было присвоено функции getType, чтобы я мог затем использовать это значение в основной функции для решения уравнения. код, который я написал, не работает, вот как выглядит функция getType:

double getType()
{
    char type;
    double getType, d, h;

    printf("\nEnter wind turbine type (v or h):");
    scanf("%c", &type);

    if (type == 'v' || type == 'V')
    {
        getHeight();
        vArea(d, h);
    }
    else if (type == 'h' || type == 'H')
    {
        hArea(d);
    }
    else
    {
        printf("Invalid input!");
        int c;
        while ((c = getchar()) != '\n' && c != EOF)
            return getType;
    }
    return type;
}

Видите ли вы ошибки, которые нужно исправить?

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Я видел еще одну вещь, которая выглядит необычно для меня:

  1. while ((c = getchar()) != '\n' && c != EOF) В этой переменной c объявлен как целочисленный тип чуть выше этого оператора, и вы сравниваете его с символьным типом, вы можетездесь проблемы.Изменить переменную c тип символа.
  2. В другой части возвращаемая вами переменная getType инициализируется как double, но ей не присваивается никакого значения.
  3. Аналогично никакое значение не присваивается dи переменная h в вашем коде, и вы посылаете их в качестве аргумента в вашу vArea функцию.Пожалуйста, позаботьтесь об этом.
  4. Убедитесь, что ваша функция getchar() должна возвращать один символ.
1 голос
/ 05 апреля 2019

Ваш код выглядит не совсем верно, объявленный вами «getType» является двойным, и то, как вы его вызывали (если мое понимание верно), также неверно, так как «return getType» будет возвращать только этот двойной, чтонеинициализирован.Для достижения вашей цели я бы порекомендовал вам реструктурировать вашу функцию, просто сделав следующее: function()

int function() {
    char type;
    printf("\nEnter wind turbine type (v or h):");
    scanf("%c", &type);
    while(type != 'v' || type |= 'h' .... )
    {
        printf("\n Invalid input, please Enter wind turbine type (v or h):");
        scanf("%c", &type);
    }

    // do the actual function here
}
0 голосов
/ 05 апреля 2019

Легко, брат, просто сделай это, замени свой прототип функции на этот.

double getType(double d, double h);

Вы определяете, куда вы вызываете функцию getType для этого.

getType(d,h);

Наконец, в объявлении функции

double getType(double d, double h)
{
double d1,h1;
d1=d;
h1=h1;

/*then rest of your code*/
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...