Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define MAXN 20
- int readmarks(FILE* fin, int* id, float* mark);
- int changemarks(int* id,float*mark, int n, int studentid, float* addr_revisedmark);
- void writemarks(FILE* fin, int* id, float* mark, int n);
- int main(void){
- FILE* fin = fopen("marksin.txt","r");
- FILE* fout = fopen("marksout.txt","w");
- if(fin==NULL){
- printf("The input file is missing!");
- return -1;
- }
- float revisedmark,mark[MAXN];
- int n = 0,studentid,id[MAXN],r; // initialize counter to zero
- n = readmarks(fin, id, mark);
- printf("Would you like to enter a revised mark? If yes, enter a student id and the new mark. If no, enter a student id of 0.");
- //Once the arrays have been read, the main then prompts the user to enter a student ID and the revised mark
- printf("Enter student ID: ");
- scanf("%d",studentid);
- if(studentid==0){
- }else{
- printf("Enter revised mark: ");
- scanf("%f",revisedmark);
- r=changemarks(id,mark,n,studentid,&revisedmark);
- if(r==0){
- printf("That student is not on the marks list.");
- }
- printf("Enter student ID and revised mark: ");
- }
- writemarks(fout, id, mark, n);
- fclose(fin);
- fclose(fout);
- return 0;
- }
- int readmarks(FILE* fin, int* id, float* mark){
- int n;
- while (fscanf(fin, "%d%f", &id[n],&mark[n]) != EOF) {
- n++; // update n
- }
- return n;
- }
- int changemarks(int* id,float*mark, int n, int studentid, float* addr_revisedmark){
- if(studentid==id[0]){
- mark[0]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[1]){
- mark[1]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[2]){
- mark[2]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[3]){
- mark[3]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[4]){
- mark[4]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[5]){
- mark[5]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[6]){
- mark[6]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[7]){
- mark[7]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[8]){
- mark[8]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[9]){
- mark[9]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[9]){
- mark[9]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[9]){
- mark[9]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[10]){
- mark[10]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[11]){
- mark[11]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[12]){
- mark[12]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[13]){
- mark[13]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[14]){
- mark[14]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[15]){
- mark[15]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[16]){
- mark[16]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[17]){
- mark[17]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[18]){
- mark[18]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[19]){
- mark[19]=*addr_revisedmark;
- return 1;
- }else if(studentid==id[20]){
- mark[20]=*addr_revisedmark;
- return 1;
- }else{
- return 0;
- }
- }
- void writemarks(FILE* fout, int* id, float* mark, int n){
- int i;
- fprintf(fout,"There are %d marks.",n);
- for(i=0;i<n;i++){
- fprintf(fout,"%d %f",id[i],mark[i]);
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement