How can I fix this error? It is caused by initializing my arrays pgAccess, pgArray, and pgRequest to variable sizes that are all global variables used throughout the program. I know there may be some undeclared variables in some of the methods but I would like to focus on the problem with these arrays. I'm working with virtual memory algorithms here.
int flag = 0, var, currFrame = 0, numFault, currRequest, request;
int numPages, numFrames, numRequest, fc =0, go =0, c =0;
int pgAccess[numRequest], pgArray[numPages], pgRequest[numRequest];
void runningMessage(int, int, int);
void fifo();
void lru();
void opt();
void runningMessage(int pg, int frame, int msg){
        if(msg == 1)
        {
                printf("Page %d already in Frame %d\n",pg, frame);
        }
        if(msg == 2)
        {
                printf("Page %d loaded into Frame %d\n",pg, frame);
        }
        if(msg == 3)
        {
                printf("Page %d unloaded from Fram %d\n",pg, frame);
        }
}
int main(int argc, char *argv[])
{
        FILE *fp;
        fp = fopen(argv[1], "r");
        int x =0;
        fscanf(fp, "%d %d %d", &numPages, &numFrames, &numRequest);
        while(!feof(fp))
        {
                fscanf(fp, "%d", &pgAccess[x]);
                x++;
        }
        fclose(fp);
        printf("Algorithm: %s\n\n", argv[2]);
        if(argv[2] == "FIFO")
        {
                fifo();
        }
        if(argv[2] == "LRU")
        {
                lru();
        }
        if(argv[3] == "OPT")
        {
                opt();
        }
}
void fifo(){
        int i, x;
        for(i = 0; i < numFrames; i++)
        {
                pgArray[i] = -1;
        }
        while(x < numRequest)
        {
                flag =0;
                var = pgAccess[x];
                for(i = 0; i < numFrames; i++)
                {
                        if(var == pgArray[i])
                        {
                                flag = 1;
                                x++;
                                runningMessage(pgArray[i], i, 1);
                                break;
                        }
                }
                if(flag == 0)
                {
                        if(currFrame < numFrames)
                        {
                                pgArray[currFrame] = pgAccess[x];
                                runningMessage(pgAccess[x], currFrame, 2);
                                currFrame++;
                                x++;
                                numFault++;
                        }
                        else if( y < numFrames)
                        {
                                runningMessage(pgArray[y], y, 3);
                                pgArray[y] = pgAccess[x];
                                runningMessage(pgAccess[x], y, 2);
                                x++;
                                y++;
                                numFault++;
                                else
                                {
                                        y =0;
                                }
                        }
                }
        }
        printf(" %d Page Faults\n\n", numFault);
}
void lru(){
        int i, x, y, a, b, j;
        y = numFrames;
        for(i = 0; i < y; i++)
        {
                pgRequest[i] = 0;
                pgArray[i] = -1;
        }
        for(i = 0; i < numRequest; i++)
        {
                flag = 0;
                a = pgAccess[i];
                for(j = 0; j < y; j++)
                {
                        if(a == pgArray[j])
                        {
                                flag = 1;
                                pgRequest[j] = i;
                                runningMessage(pgArray[j], j, 1);
                                break;
                        }
                }
                if((flag == 0) && (b < y))
                {
                        fc++;
                        pgArray[b] = a;
                        pgRequest[b] = i;
                        runningMessage(pgArray[b], b, 2);
                        b++;
                }
                else if((flag == 0) && (b == y))
                {
                        fc++;
                        minRequest = pgRequest[0];
                        for(currRequest = 0; currRequest < y; currRequest++)
                        {
                                if(pgRequest[currRequest] < minRequest)
                                {
                                        minRequest = pgRequest[currRequest];
                                        request = currRequest;
                                }
                        }
                        pgArray[request] = a;
                        pgRequest[request] = i;
                        runningMessage(pgAccess[request], request, 3);
                        runningMessage(pgArray[request], request, 2);
                        request =0;
                }
        }
        printf(" %d Page Faults\n\n", fc);
}
void opt(){
        int i, x, y, a;
        for(i = 0; i < numFrames; i++)
        {
                pgRequest[i] = 0;
                pgArray[i] = -1;
        }
        for(i = 0; i < numRequest; i++)
        {
                flag = 0;
                a = pgAccess[i];
                for(y = 0; y < numFrames, y++)
                {
                        if(a == pgArray[y])
                        {
                                flag = 1;
                                runningMessage(pgArray[y], y, 1);
                                break;
                        }
                }
                if((flag == 0) && (x < numFrames))
                {
                        fc++;
                        pgArray[x] = a;
                        runningMessage(pgArray[x], x, 2);
                        x++;
                }
                else if((flag == 0) && (x == numFrames))
                {
                        fc++;
                        for(go = 0; go < numFrames; go++)
                        {
                                pgRequest[go] = 0;
                        }
                        for(currRequest = 0; currRequest < numFrames; currRequest++)
                        {
                                c = 0;
                                for(currFrame = i + 1; currFrame < numRequest; currFrame++);
                                {
                                        if(pgArray[currRequest] == pgAccess[currFrame])
                                        {
                                                if(pgRequest[currRequest] == 0)
                                                {
                                                        pgRequest[currRequest] = currFrame;
                                                        c = 1;
                                                }
                                        }
                                }
                                if(c != 1)
                                {
                                        pgRequest[currRequest] = numRequest + 1;
                                }
                        }
                        request = 0;
                        maxRequest = pgRequest[0];
                        for(go = 0; go < numFrames; go++)
                        {
                                if(pgRequest[go] > maxRequest)
                                {
                                        maxRequest = pgRequest[go];
                                        runningMessage(pgArray[go], go, 3);
                                        request = go;
                                }
                        }
                        pgArray[request] = a;
                        runningMessage(pgArray[request], request, 2);
                }
        }
        printf(" %d Page Faults\n\n", fc);
}
 
     
     
    