I get help with the cast and it should run I am using two compilers one works and doesn't leave the output window open the other still gives me an error. Cut and paste this and see if it runs as is for you.
#include <stdio.h>
#include <stdlib.h>
#define NULL 0
struct node
{
int number;
struct node *next;
};
struct node *pageFaults, *p, *q, *z, *n;
int num=0;
void ChangeFrames(void)
{
int count, x, y, r, m, tempx, frames[10], pages[40];
count=0;
/* creates the reference string randomly */
for(x=0; x<=39; x++)
{
if (frames[0] == 0)
{
frames[0] = pages[y];
count++;
}
/* Next page frame gets filled #2 */
if (frames[1] == 0 && frames[0] != 0 && frames[0] != pages[y])
{
frames[1] = pages[y];
count++;
}
/* Next page frame gets filled #3 */
if (frames[0] !=0 && frames[1] !=0 && frames[0] != pages[y])
if (frames[1] != pages[y] && frames[2] == 0)
{
frames[2] = pages[y];
count++;
}
/* Next page frame gets filled #4 */
if (frames[0] != 0 && frames[1] !=0 & frames[0] != pages[y] && frames[1] != pages[y])
if (frames[2] != 0 && frames[2] != pages[y] && frames[3] == 0)
{
frames[3] = pages[y];
count++;
}
/* Next page frame get filled #5 */
if (frames[3] != 0 && frames[0] != pages[y] && frames[1] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[4] == 0)
{
if (frames[2] != 0 && frames[1] != 0 && frames[0] != 0)
{
frames[4] = pages[y];
count++;
}
}
}
/* Next page frame gets filled #6*/
if (frames[4] != 0 && frames[0] != pages[y] && frames[1] != pages[y] && frames[0] != 0)
{
if(frames[2] != pages[y] && frames[3] != pages[y] && frames[4] != pages[y])
{
if (frames[5] == 0 && frames[3] != 0 && frames[2] != 0 && frames[1] != 0)
{
frames[5] = pages[y];
count++;
}
}
}
/* Next page frame get sfilled #7 */
if (frames[5] != 0 && frames[6] == 0 && frames[0] != pages[y] && frames[4] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[4] != pages[y])
{
if (frames[5] != pages[y] && frames[4] != 0 && frames[3] != 0 && frames[2] != 0)
{
if (frames[1] != 0 && frames[3] != 0 && frames[4] != 0 && frames[0] != 0)
{
frames[6] = pages[y];
count++;
}
}
}
}
/* Next page frame get filled #8 */
if (frames[6] != 0 && frames[7] == 0 && frames[0] != pages[y] && frames[1] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[4] != pages[y])
{
if (frames[5] != pages[y] && frames[6] != pages[y] && frames[2] != 0 && frames[0] != 0)
{
if (frames[1] !=0 && frames[3] != 0 && frames[4] != 0 && frames[5] != 0)
{
frames[7] = pages[y];
count++;
}
}
}
}
/* Next page frame gets filled #9 */
if (frames[6] != pages[y] && frames[7] != 0 && frames[0] != pages[y] && frames[1] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[4] != pages[y])
{
if (frames[5] != pages[y] && frames[6] != pages[y] && frames[7] != pages[y])
{
if (frames[6] != 0 && frames[5] != 0 && frames[4] != 0 && frames[3] != 0)
{
if (frames[2] != 0 && frames[1] != 0 && frames[0] != 0 && frames[8] == 0)
{
frames[8] = pages[y];
count++;
}
}
}
}
}
/* Next page frame gets filled #10 */
if (frames[6] != pages[y] && frames[7] != pages[y] && frames[0] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[3] != 0)
{
if (frames[5] != pages[y] && frames[6] != 0 && frames[2] != 0 && frames[8] != 0 && frames[7] != 0)
{
if (frames[9] == 0 && frames[8] != pages[y] && frames[5] != 0 && frames[4] != 0)
{
if (frames[0] != 0 && frames[1] != 0 && frames[2] != 0 && frames[3] != 0)
{
if (frames[5] != 0 && frames[1] != pages[y] && frames[4] != pages[y])
{
frames[9] = pages[y];
count++;
}
}
}
}
}
}
m = pages[y];
/* Next the pages are evicted and swapped with new pages */
if (frames[7] != 0 && frames[0] != 0 && frames[1] != 0)
{
if (frames[2] != 0 && frames[3] != 0 && frames[4] != 0 && frames[9] != 0)
{
if (frames[5] != 0 && frames[6] != 0 && frames[8] != 0)
{
if (frames[6] != pages[y] && frames[7] != pages[y] && frames[0] != pages[y] && frames[1] != pages[y])
{
if (frames[2] != pages[y] && frames[3] != pages[y] && frames[4] != pages[y] && frames[9] != pages[y])
{
if (frames[5] != pages[y] && frames[6] != pages[y] && frames[8] != pages[y])
{
if (num>9)
{
if (num==10)
{
pageFaults = (struct node *)calloc(1, sizeof(struct node));
(*pageFaults).number=frames[0];
(*pageFaults).next=NULL;
q=pageFaults;
}
else
{
z = (struct node *)calloc(1, sizeof(struct node));
(*z).number=frames[0];
(*q).next=z;
q=z;
}
}
num++;
frames[0] = frames[1];
frames[1] = frames[2];
frames[2] = frames[3];
frames[3] = frames[4];
frames[4] = frames[5];
frames[5] = frames[6];
frames[6] = frames[7];
frames[7] = frames[8];
frames[8] = frames[9];
frames[9] = m;
count++;
}
}
}
}
}
}
}
printf("Here are the frames at the end of the reference string\n");
for( r=0; r<=9; r++)
{
printf(" %d", frames[r]);
}
printf("\nTotal number of page faults = %d\n", count);
for(tempx = 0; tempx <= 39; tempx++)
{
printf(" %d", pages[tempx]);
}
}
int main()
{
void changeFrames();
printf("Pages evicted are:\n");
p=pageFaults;
n=pageFaults;
num=0;
while(p != NULL)
{
printf("%d", (*p).number);
p = (*p).next;
}
}