Функция Average и stdDev const int tab []. Средние проблемы - PullRequest
0 голосов
/ 02 января 2019

Мне нужно использовать: среднее число с плавающей запятой (const int tab [], int size);float stdDev (const int tab [], int size);напечатать среднее и stdDev в C.

У меня есть проблема со средним, и я думаю, с const int.Когда я добавляю const int tab [101], у меня возникает ошибка с a1;Так, как я могу заставить это работать с const int (если я могу).И если что-то не так с этим кодом.Любая помощь будет полезна.

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

float average(const int tab[], int size);
float stdDev(const int tab[], int size);

int main()
{
float ave, std;
int a1;
int j;
int tab[101];
printf("Podaj liczby: ");
for(j=0; j<=99; j++)
{
    a1 = scanf("%d", &tab[j]);

    if(a1<1)
 {
    printf("Incorrect input");
    return 1;
 }
 if(tab[0]==0)
 {
    printf("not enough data available");
    return 2;
 }
    if(tab[j]==0)
    {
        break;
    }

} 

ave = average(tab, j);
printf("%.2f\n", ave);
std = stdDev(tab, j);
printf("%.2f", std);
return 0;
}

float average(const int tab[], int size)
{
int i;
float y=0, x;

if(size<=0)
{
    return -1;
}

for(i=0; i<size; i++)
{

    x = x + tab[i];
}
y = x/size;
return y;
}
float stdDev(const int tab[], int size)
{
int i;
float y, z, z1, z2=0, z3=0;
if(size<=0)
{
    return -1;
}

y = average(tab, size);


for(i=0; i<size; i++)
{

    z = tab[i] - y;
    z1 = pow(z, 2);
    z2 = z2 + z1;
    z=0;
    z1=0;
}
z3 = sqrt(z2/size);
return z3;
}

1 Ответ

0 голосов
/ 02 января 2019

Вы определяете переменную x в average здесь:

float y=0, x;

без указания ее значения.Тогда вот:

x = x + tab[i];

вы читаете его значение, не устанавливая его заранее.Поскольку вы никогда не давали x значение, его значение будет неопределенным, и чтение его приведет к неопределенному поведению, что означает, что ваша программа может, например, печатать вывод мусора.

Всегда инициализировать ваши переменные:

float y=0, x=0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...