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);}