please expain the following code line by line. // Q7. A text file, \"file.dat\"
ID: 3732447 • Letter: P
Question
please expain the following code line by line. // Q7. A text file, "file.dat" contains ascii data
// 1.1 1.2
// 1.3 1.4
// 1.5 1.6
// 1.7 1.8
// 1.9 1.0
// write code to read these numbers into an array of strusture below
typedef struct
{ float x, y; } POINT;
POINT pointarray[5];
FILE *fp;
fp = fopen("file.dat", "r"); for(i=0; i<5; i++)
fscanf(fp, "%f %f", &pointarray[i].x, &pointarray[i].y);
fclose(fp);
for(i=0; i<5; i++)
printf("%f %f ", pointarray[i].x, pointarray[i].y); printf(" "); // Q8. Read the above data into a liked list. Then, delete the node
// whose x is 1.7.
typedef struct ll
{ float x, y; struct ll *nextll;
} NODE;
NODE rtnode, *newptr, *currentptr;
fp = fopen("file.dat", "r"); rtnode.nextll = NULL;
currentptr = &rtnode;
for(i=0; i<5; i++)
{ fscanf(fp, "%f %f", &fx, &fy);
newptr = malloc( sizeof(NODE) );
newptr->x = fx;
newptr->y = fy;
newptr->nextll = NULL;
currentptr->nextll = newptr;
currentptr = newptr; // or currentptr = currentptr->next;
}
fclose(fp);
printf(" "); currentptr = rtnode.nextll;
for(i=0; currentptr; i++)
{ printf("trav ll (%u) %f %f ", currentptr,currentptr->x, currentptr->y); currentptr = currentptr->nextll;
}
printf(" "); // Q9. Add a node with x value 2.0 after the node whose data is 1.3.
currentptr = rtnode.nextll;
for(i=0; currentptr; i++)
{ printf("-- trav ll (%u) %f %f ", currentptr, currentptr->x, currentptr->y); if( (currentptr->x > 1.299) && (currentptr->x <1.301) )
//if( currentptr->x ==1.3 )
{ printf(" 1.3 found.... "); newptr = malloc( sizeof(NODE) );
newptr->x = 2.0;
newptr->y = 2.0;
newptr->nextll = currentptr->nextll;
currentptr->nextll = newptr;
printf(" 1.3 found.... breaking ... "); break;
}
currentptr = currentptr->nextll;
}
printf(" "); currentptr = rtnode.nextll;
for(i=0; currentptr; i++)
{ printf("trav ll (%u) %f %f ", currentptr, currentptr->x, currentptr->y); currentptr = currentptr->nextll;
}
printf(" "); // Q10. Write code to approximate the area below f(x)=x*x+2
// from x=a to b with x interval interval.
{double x, interval, a, b, xval, h, area; x = 0.000000001;
a = 0.0;
b = 0.5;
area = 0.0;
for( xval = a; xval<b; xval += x )
{ h = xval*xval +2.0; area += h * x;
}
printf("area = %f ", area); }
// assume x, interval, a, and b are given already
currentptr = &rtnode;
for(i=0; currentptr; i++)
{ printf("==-- trav ll (%u) %f %f ", currentptr->nextll, currentptr->nextll->x, currentptr->nextll->y);
if( (currentptr->nextll->x > 1.299) && (currentptr->nextll->x <1.301) )
//if( currentptr->x ==1.3 )
{ printf(" 1.3 found.... "); newptr = malloc( sizeof(NODE) );
newptr->x = 2.0;
newptr->y = 2.0;
newptr->nextll = currentptr->nextll;
currentptr->nextll = newptr;
printf(" 1.3 found.... breaking ... "); break;
}
currentptr = currentptr->nextll;
}
printf(" "); currentptr = rtnode.nextll;
for(i=0; currentptr; i++)
{ printf("trav ll (%u) %f %f ", currentptr, currentptr->x, currentptr->y); currentptr = currentptr->nextll;
}
printf(" "); }
Explanation / Answer
Hi i give explaination within comment itself in every line given.
Explaination :
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.