ошибка: конфликтующие типы для «computeTemp» (C)

#c

#c

Вопрос:

 #include <stdio.h>
#include <math.h>

double computeTemp(double, double, double, double, double, double);

void main(void)
{

 double rm,deg,h,w,l,t;
    double final_temp;

    printf("For all calculations assume that pressure is constant at 101.325kPa,and the heat capacity of air is also constant at 0.718kJ/kg*Kn");
    printf("Please enter the number of students in the room:n");
    scanf("%lf",amp;rm);
    printf("Please enter a temperature in degrees Celcius:n");
    scanf("%lf",amp;deg);
    printf("Please enter the height of the room in metres (m):n");
    scanf("%lf",amp;h);
    printf("Please enter the width of the room in metres (m):n");
    scanf("%lf",amp;w);
    printf("Please enter the length of the room in metres (m):n");
    scanf("%lf",amp;l);
    printf("Please enter a time in minutes (min.):n");
    scanf("%lf",amp;t);

    final_temp = computeTemp(rm,deg,h,w,l,t,final_temp);

    printf("Number of students: %fn",rm);
    printf("Initial temperature in degrees Celcius: %fn",deg);
    printf("Height of room (m): %fn",h);
    printf("Width of room (m): %fn",w);
    printf("Length of room (m): %fn",l);
    printf("Time elapsed (min.):%fn",t);
    printf("Final Temperature in degrees Celcius: %fn",final_temp);

}

double computeTemp(double num1, double num2, double num3, double num4, double num5, double num6)

{

 double temp; 

    temp = ((101.325*28.97)*(num3*num4*num5))/8.314*(num2 273.15);
    temp = temp*0.718;
    temp = (((4.8*num1*num6)*(num2 273.15))/(temp));
    temp = temp (num2 273.15);
    temp = temp-273.15;
    return(temp);
}
  

Я удалил double из вызова функции, и появляется сообщение об ошибке, что в computeTemp слишком мало аргументов. я новичок в программировании на c и использовании CodeBlocks, поэтому буду очень признателен за любую информацию, которая может помочь мне в решении этой проблемы

Комментарии:

1. пожалуйста, используйте CTRL K для отступа вашего кода

2. Ваша схема именования аргументов для computeTemp не так хороша. Если вы не знаете точно, что делает функция, нет никакого способа понять это. Пожалуйста, используйте более описательные имена. Кроме того, пожалуйста, старайтесь избегать магических чисел .

Ответ №1:

Ваше прямое объявление объявляет computeTemp как

 double computeTemp(double, double, double, double, double, double, double);
  

и определение

 double computeTemp(double num1, double num2, double num3, double num4, double num5, double num6)
  

Подсчитайте их; у первого семь аргументов, а у второго только шесть…

Комментарии:

1. когда я это делаю, появляется новая ошибка, в которой говорится, что в функции computeTemp слишком много аргументов

2. @nsquared. Пожалуйста, отредактируйте свой пост и добавьте то, на что вы его изменили

3. Вы вызываете функции computetemp со слишком большим количеством аргументов. Согласно вашему списку выше, вы отправляете семь переменных. Вы правильно обратились к комментарию Бена — вам нужно увеличить количество аргументов в определении функции до семи и сохранить объявление функции неизменным. Или, если вам не нужен седьмой аргумент, уменьшите число до шести и удалите шестую переменную при вызове функции.

4. @cdcdcd Ваш текущий код содержит 6 параметров для вашей функции, но вы пытаетесь вызвать функцию с 7 параметрами.

5. nos являетесь ли вы сотрудником полиции апострофа? 🙂 Я не уверен, что вы предлагаете — я в основном сказал то же самое, но используя «аргументы». Строго говоря, функция принимает 7 параметров, но вы передаете 6 аргументов. В K amp; R обмен данными настолько слабо, что я не утруждаю себя дифференциацией.