Member 14807520 Ответов: 2

Подписанное значение не является ни массивом, ни указателем, ни вектором


Хии,
Здесь я столкнулся с таким видом в моем следующем коде.
<pre>
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include<stdio.h>


int main()
{
    bool True  =  1; //for sqr wave conversion
    bool False =  0 ;
    int n[10],m[10] ; // n is an array of 1000 integers
    int i1, i2,x,y ;
    int r,xx[10],xy[10],yy[10],nr=0,dr_1=0,dr_2=0,dr_3=0,dr=0;
    int sum_y=0,sum_yy=0,sum_xy=0,sum_x=0,sum_xx=0;
    int  i, h=10;


    /* initialize elements1 of array n to 0 */
    for (i1=0;i1<10;i1++)
    {
        n[i1] = i1+1; // set an element at location i to 1000
    }
     /* initialize elements2 of array n to 0 */
    for (i2=0; i2<10; i2++)
    {
        m[i2] = i2+5;

    }

    //output of each array element
    for (x=0 ;x<10; x++)
    {
             if (x%2 == 0) //sqr wave coversion
              {
         True = 1 ;
               }

              else
              {
         False = 0 ;
              }

        printf("element1 [%d] = %d\n" , x, n[x]);

    }
    for (y=0 ; y<10; y++)
    {
            if (y%2 == 0) //sqr wave
            {
             False  = 0;
            }

            else

            {
             True = 1;
            }


        printf("element2 [%d] = %d\n" , y, m[y]);
    }
    for(i=0; i<h; i++)
    {
     xx[i]= x[i]*x[i]; // coorelation logic
     yy[i]= y[i]*y[i];
    }
     for(i=0;i<h;i++)
    {
     sum_x+=x[i];
     sum_y+=y[i];
     sum_xx+= xx[i];
     sum_yy+=yy[i];
     sum_xy+= x[i]*y[i];
    }
    hr=(h*sum_xy)-(sum_x*sum_y);
    int sum_x2=sum_x*sum_x;
    int sum_y2=sum_y*sum_y;
    dr_1=(h*sum_xx)-sum_x2;
    dr_2=(h*sum_yy)-sum_y2;
    dr_3=dr_1*dr_2;
    dr=sqrt(dr_3);
    r=(hr/dr);
    printf("Total Numbers:%d\nCorrelation Coefficient:%.2f",h,r);
    return 0;
}


Что я уже пробовал:

Ошибка : подписанное значение не является ни массивом, ни указателем, ни вектором.
в жирной области.

2 Ответов

Рейтинг:
1

OriginalGriff

Посмотрите на свой код:

int i1, i2,x,y ;

for (x=0 ;x<10; x++)
{
    ...
}
for (y=0 ; y<10; y++)
{
    ...
}

for(i=0; i<h; i++)
{
 xx[i]= x[i]*x[i]; // coorelation logic
 yy[i]= y[i]*y[i];
}
 for(i=0;i<h;i++)
{
 sum_x+=x[i];
 sum_y+=y[i];
 sum_xx+= xx[i];
 sum_yy+=yy[i];
 sum_xy+= x[i]*y[i];
}

Вы не можете объявить целое число и рассматривать его как массив - точно так же вы не можете объявить массив и рассматривать его как целое число!
Я подозреваю, что ваш x и y должно быть m и n, но ваш код слишком "студенческий" для меня, чтобы понять его, и я понятия не имею, что вы на самом деле пытаетесь заставить его делать.

Сделайте себе пару одолжений: выберите стиль отступа и придерживайтесь его. Затем равномерно отступайте в своем коде, чтобы было очевидно, что есть что - в данный момент это повсюду, и в результате читать его гораздо труднее. И прекратите использовать односимвольные имена переменных: это означает, что никто - даже вы, очевидно, - не знает, какая переменная что делает. И это делает ваш код действительно трудным для разработки. Используйте осмысленные имена, и ваш код начнет самостоятельно документировать, а это означает, что его гораздо легче читать и гораздо труднее использовать неправильные переменные, как у вас. Вот почему ваш код - "оценка студента"! :смеяться:


Рейтинг:
0

Rick York

x и y не являются ни указателями, ни векторами.