В синтаксисе C символ ^
не предполагается использовать для возведения в степень для операндов. Это подразумевается как оператор XOR, используемый операциями с битами.
Вы можете выполнить возведение в степень на 2, умножив соответствующее значение на себя:
exp2_a = a * a; // Example.
Также параметры int*
типов для x
и y
в koko()
не обязательно должны быть указателями (если для задачи не требуется, чтобы все типы параметров были указателями), поскольку нам не нужно изменять переданные объекты изнутри koko()
. Это делает дескриптор при вызове функции более удобным, поскольку нам не нужно добавлять оператор амперсанда (&
) для предоставления относительных адресов. Просто измените их на тип int
.
Кроме того, koko()
ничего не возвращает, поэтому возвращаемое значение должно иметь тип void
, а не int
.
Поэтому лучше использовать:
void koko(int x, int y, int* z, int* u)
{
*z = (x * x) + (y * y);
*u = (x + y) * (x + y);
}
Далее вы пропустили объявление / прототип koko()
до main()
, поскольку функция определена после main()
в исходном коде. Это даст вам как минимум предупреждение о компиляции.
Вот полный и исправленный код:
#include <stdio.h>
#include <stdlib.h>
void koko(int,int,int*,int*);
int main()
{
int a=5;
int b=3;
int c,d;
koko(a,b,&c,&d);
printf("Rezulat brojeva %d i %d je %d i %d",a,b,c,d);
}
void koko(int x, int y, int* z, int* u)
{
*z = (x * x) + (y * y);
*u = (x + y) * (x + y);
}
Вывод:
Rezulat brojeva 5 i 3 je 34 i 64