Я отслеживаю код, но ожидаемый конечный результат на 1 меньше, чем фактический результат. Также возвращение функции меня смущает. Я не понимаю, что это значит, возвращая (b + 2) в function1. Где я должен добавить 2? Я положил результат в комментариях для ясности.
#include <stdio.h>
int function1(int info[], int size, int a, int b)
{
//info:3 5 7 9 11 13 15 17 //size=9 //a=i->1..9 //b=(i-1)*(i-1)
if (a<5)//1 3
{
info[a]=b-1;//-1 3
//b=0 4
//a=1 ->-1 //a=3 ->3
printf("info[%d]=%d\n",a,info[a]);
}
else //5 7 9
{
info[a]=b+1;//info[a]=17 37 65
//b=16 36 64
//a=5 ->17 //a=7 ->37 //a=9 ->65
printf("info[%d]=%d\n",a,info[a]);
}
return(b+2); //what's happening here?
}
int main()
{
int info[9],i,j,a,b;
info[0]=1;
for (i=1; i<9; i++)
info[i]=info[i-1]+2; // 3 5 7 9 11 13 15 17
i=1;
while (i<=9)
{
j = function1(info,9, i,(i-1)*(i-1));
printf("while:i=%d j=%d\n\n",i,j); //1 2//3 6//5 18//7 38//9 66
i = i + 2;//1 3 5 7 9
}
printf("\n");
}
Expected:
info[1]=-1
while:i=1 j=-1
info[3]=3
while:i=3 j=3
info[5]=17
while:i=5 j=17
info[7]=37
while:i=7 j=37
info[9]=65
while:i=9 j=65
Actual:
info[1]=-1
while:i=1 j=2
info[3]=3
while:i=3 j=6
info[5]=17
while:i=5 j=18
info[7]=37
while:i=7 j=38
info[9]=65
while:i=9 j=66