1

Тема: Циклічна програма з накопиченням суми мовою C

Всім привіт!
Треба знайти середнє арифметичне з модулів обчислених значень функції y=(a+sin2 (b2 +x2 )/((b2 +x2)1/3).
Примітка: 2 і 1/3 означає піднесення до квадрата і добування кореня кубічного відповідно.

#include <stdio.h>
#include <math.h>
#define A 2.6
#define B 32.1
int main()
{
    float x;
    float y;
    float s=0; float sm;
    for(x=0.012;x<0.75;x+=0.9225){
        y=(A+pow(sin(pow(B,2.0)+pow(x,2.0))))/cbrt(pow(B,2.0)+pow(x,2.0));
        if (y>0){
          s+=y;  
        }
        else{
           s-=y; 
        }
        
    }
    sm=s/7;
    printf("%f", sm);

    return 0;
}

Чомусь не працює) Відповідь компілятора:

Compilation failed due to following error(s).main.c: In function ‘main’:
main.c:11:14: error: too few arguments to function ‘pow’
         y=(A+pow(sin(pow(B,2.0)+pow(x,2.0))))/cbrt(pow(B,2.0)+pow(x,2.0));
              ^~~
In file included from /usr/include/features.h:374:0,
                 from /usr/include/stdio.h:27,
                 from main.c:1:
/usr/include/x86_64-linux-gnu/bits/mathcalls.h:153:1: note: declared here
 __MATHCALL (pow,, (_Mdouble_ __x, _Mdouble_ __y));
 ^

Буду рада будь-яким підказкам

2

Re: Циклічна програма з накопиченням суми мовою C

Написано ж англійською по LCD: мало аргументів для pow. Другий аргумент після синуса забули. І замініть pow(x,2.0) на x*x і т.д.: це значно коротше пишеться і, насправді, навіть швидше обчислюється.

Подякували: Lata1

3 Востаннє редагувалося ur_naz (17.11.2020 19:48:53)

Re: Циклічна програма з накопиченням суми мовою C

*FACEPALM* він тобі навіть місце показує де в тебе замало аргументів...

Подякували: Lata1

4

Re: Циклічна програма з накопиченням суми мовою C

Дякую, koala і Павлику! Так, уже працює. Просто формула досить громіздка  :), легко заплутатися [:} . А користуватися підказками компілятора ще не навчилася *SORRY*

5

Re: Циклічна програма з накопиченням суми мовою C

Ось так:

y=(A+pow(sin(B*B+x*x),2.0))/cbrt(B*B+x*x);
Подякували: Lata1

6

Re: Циклічна програма з накопиченням суми мовою C

Дякую, так і написала)))

7

Re: Циклічна програма з накопиченням суми мовою C

float sq = B*B+x*x;
y=(A + pow(sin(sq), 2.0)) / cbrt(sq);
//...
Подякували: koala1

8

Re: Циклічна програма з накопиченням суми мовою C

Якщо вже оптимізувати, то по вуха:

float sq = B*B+x*x;
float sinsq = sin(sq)
y = (A+sinsq*sinsq)/cbrt(sq);

Але для початківця краще, гадаю, все ж в один рядок, щоб було формулу видно.

Подякували: Lata, leofun012