2017-02-20 19 views
0

Задача состояла в том, чтобы найти область и объем сферы с использованием функций, и была предоставлена ​​дополнительная задача, чтобы дать возможность находить мощности радиуса отдельно (с использованием другой функции) а затем вызовите его в функции области и объема. Я не могу понять, как вызвать функцию радиуса для разных степеней. Формула для площади поверхности 4 * PI * R (мощность 2) Формула для тома 4/3 * (ПИ) * г (мощность 3)Вычислить площадь и объем сферы в C

#include <stdio.h> 
#include <math.h> 
#include <conio.h> 
#define PI 3.142 

float surface(int x); 
float volume(int y); 
int radius(); 
int main() 
{ 
    int r; 
    float a, b; 
    clrscr(); 
    printf("Enter the radius :"); 
    scanf("%d", &r); 
    a=surface(r); 
    b=volume(r); 
    printf("Surface Area =%f", a); 
    printf("\n"); 
    printf("Volume =%f", b); 
    getch(); 
    return 0; 
} 
int radius(int z) 
{ 
    int f; 
    f=z*z; 
    return (f); 
} 
float surface(int x) 
{ 
    float s; 
    s = 4*PI*radius(x); 
    return (s); 
} 
float volume(int y) 
{ 
    float v; 
    v = (4*PI*radius(y)/3); 
    return (v); 
} 

Я также указание «Воздержитесь от использования Массивов или других методов решения этого вопроса ».

Я не могу определить способ вызова функции радиуса для разных мощностей. Объяснение или правильный способ решить это было бы полезно!

+1

Это не совсем ясно, что проблема здесь. Можете ли вы привести несколько примеров того, как код не работает так, как вы ожидали. – Sean

+0

Ваша функция 'radius' должна называться' square' (или 'pow2'); вы должны изобрести другую функцию под названием 'cube' (или' pow3'). Они должны взять один параметр, возможно, названный 'n'. Параметры 'surface' и' volume' должны просто называться 'r' (для« radius »). –

+0

Не очевидная проблема, она просто дает значение, которое не соответствует действительности. Так технически это неправильно. @ Sean –

ответ

3

radius это на самом деле не лучшее имя для функции Тхет вычисляет квадрат или власть 3. Я бы назвал функцию power вместо этого. И чтобы сделать это с разными полномочиями, вам нужен показатель в качестве параметра. Затем вы можете использовать цикл для вычисления мощности.

/* Calculate the power for exponents >= 0 */ 
int power(int radius, int exponent) { 
    int i; 
    int result = 1; 

    for (i = 0; i < exponent; i++) { 
     result = result * radius; 
    } 
    return result; 
} 

Вы можете использовать его как это:

int radius; 
// After assigning a value to radius you can call power() like this: 
int square = power(radius, 2); 
int cube = power(radius, 3); 
+0

Спасибо @ KlasLindbäck. Могу ли я вызвать несколько параметров, подобных этому в функции? –

+1

@SyedHasan Да. Вы можете добавить столько параметров, сколько вам нужно, когда вы создаете свою функцию. Вам нужно сопоставить все параметры при вызове функции. (Для промежуточных/продвинутых пользователей есть что-то, называемое переменными аргументами, которое используется для функций, которые принимают переменное количество аргументов. См. Https://en.wikipedia.org/wiki/Variadic_function) –

+0

Большое спасибо, решила мою проблему с другой программой! –

-2
int cube(int z){ 
    return z * z * z; 
} 

или

#include<math.h> // at the top 
... 
int power(int base, int exponent){ 
    return pow(base,exponent); 
} 
+0

это не отвечает на вопрос полностью – niceman

+0

@ user3853544, Почему бы не определить вторую функцию 'power_bis', которая вызывает' power', чтобы наконец вызвать 'pow'? или 'power_tris', который вызывает' power_bis', который вызывает 'power', чтобы наконец вызвать' pow' ??? –

+0

@ Луис Колорадо. Путь OP сформулировал вопрос, который он озвучил, как будто его судили, чтобы создать свою собственную функцию. В противном случае просто вызовите pow (...) самостоятельно. – user3853544