#c #function
#c #функция
Вопрос:
Я написал код, использующий некоторые функции. В функции GetType пользователю запрашивается ввод, jf если ввод равен 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", amp;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' amp;amp; c != EOF)
return getType;
}
return type;
}
Видите ли вы какие-либо ошибки, которые нуждаются в исправлении?
Комментарии:
1. Возможно, вам нужно прочитать о » Как вызвать функцию, чтобы она возвращала значение в качестве результата вызывающему и чтобы этот результат был назначен чему-то внутри вызывающего? «? Я думаю, что учебное пособие по C помогло бы.
2. Подводя итог: в вашем вопросе много неясного, а также в вашем коде, и, вероятно, также неправильно.
Ответ №1:
Я видел другую вещь, которая выглядит необычно для меня:
while ((c = getchar()) != 'n' amp;amp; c != EOF)
В этой переменной c объявлен как целочисленный тип чуть выше этого оператора, и вы сравниваете его с символьным типом, здесь у вас могут возникнуть проблемы. Измените символ типа переменнойc
.- В другой части ваша возвращаемая
getType
переменная с инициализируется как double, но не присваивается никакого значения. - Аналогично, переменной
d
иh
в вашем коде не присвоено значение, и вы отправляете их в качестве аргумента в вашейvArea
функции. Пожалуйста, позаботьтесь и об этом. - Убедитесь, что ваша
getchar()
функция должна возвращать один символ.
Комментарии:
1. я исправил номера 1 и 2. Что касается 3, d и h равны функциям, которым присвоено значение в основной функции, я отправляю их в функцию vArea, чтобы это значение использовалось в функции, которая выглядит следующим образом « double vArea (double d, double h) { double vArea; vArea = (pi d h); return vArea; } « проблема, с которой я сталкиваюсь, заключается в том, что я не уверен, что функции vArea и hArea вызываются должным образом в операторы if и else if и, следовательно, когда я печатаю значение для функции GetType, оно неверно.
2. братан, если вы инициализируете их в своей основной функции, вы должны передать их в качестве аргумента в функции GetType. Затем скопируйте эти значения в вашу локальную переменную d и h.
3. в основной функции я инициализирую d и h. мне нужна функция GetType для запуска функции vArea или hArea в зависимости от входных данных, в которых затем будет вычисляться площадь внутри функций area, если вы меня понимаете.
4. я понимаю тебя, братан, но я говорю, что в vArea function вы отправляете аргументы d и h, значение которых определено в main function, но эти переменные не являются частью d и h, пока вы не передадите их своей функции. Локальная переменная имеет свое значение в функции, а не в другой функции, пока вы не передали ее в другую функцию.
5. да, братан, я понимаю тебя, так как я мог бы это исправить, чтобы аргументы d и h передавались через функцию GetType для правильного вычисления области
Ответ №2:
Ваш код выглядит не совсем корректно, объявленный вами «GetType» является double , и то, как вы его вызвали (если я правильно понимаю), также неверно, поскольку «return GetType» вернет только этот double, который неинициализирован. Для достижения вашей цели я бы рекомендовал вам реструктурировать вашу функцию, просто выполнив следующее: function()
int function() {
char type;
printf("nEnter wind turbine type (v or h):");
scanf("%c", amp;type);
while(type != 'v' || type |= 'h' .... )
{
printf("n Invalid input, please Enter wind turbine type (v or h):");
scanf("%c", amp;type);
}
// do the actual function here
}
Комментарии:
1. Возможно, вам захочется переосмыслить это утверждение:
while(type != 'v' || type |= 'h' .... )
Ответ №3:
Полегче, брат, просто сделай это, измени свой прототип функции на этот.
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*/
}