#include <stdio.h>
#include <stdlib.h>
#define MAX_STUDENTS 100
typedef struct {
int id;
char name[50];
float cse103;
float mat101;
float eng101;
float cgpa;
} Student;
float calculate_cgpa(float cse, float mat, float eng) {
float total_credits = 4.5f + 3.0f + 3.0f;
float weighted_sum = (cse * 4.5f) + (mat * 3.0f) + (eng * 3.0f);
return weighted_sum / total_credits;
}
int main() {
Student students[MAX_STUDENTS];
int count = 0;
FILE *inputFile = stdin;
if (inputFile == NULL) {
printf("Error: Could not open student_input.txt file.\n"); return 1;
}
while (count < MAX_STUDENTS &&
fscanf(inputFile
, "%d %s %f %f %f", &students[count].id,
students[count].name,
&students[count].cse103,
&students[count].mat101,
&students[count].eng101) == 5) {
students[count].cgpa = calculate_cgpa(
students[count].cse103,
students[count].mat101,
students[count].eng101
);
count++;
}
FILE *outputFile = stdout;
if (outputFile == NULL) {
printf("Error: Could not open output.txt file for writing.\n"); return 1;
}
const char *border = "\n";
printf("%-5s %-10s %-8s %-8s %-8s %-6s\n", "ID", "Name", "CSE103", "MAT101", "ENG101", "CGPA");
fprintf(outputFile
, "%-5s %-10s %-8s %-8s %-8s %-6s\n", "ID", "Name", "CSE103", "MAT101", "ENG101", "CGPA");
for (int i = 0; i < count; i++) {
printf("%-5d %-10s %-8.2f %-8.2f %-8.2f %-6.2f\n", students[i].id, students[i].name, students[i].cse103,
students[i].mat101, students[i].eng101, students[i].cgpa);
fprintf(outputFile
, "%-5d %-10s %-8.2f %-8.2f %-8.2f %-6.2f\n", students[i].id, students[i].name, students[i].cse103,
students[i].mat101, students[i].eng101, students[i].cgpa);
}
printf("\nSuccessfully processed %d.txt\n", count
);
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgojZGVmaW5lIE1BWF9TVFVERU5UUyAxMDAKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgaWQ7CiAgICBjaGFyIG5hbWVbNTBdOwogICAgZmxvYXQgY3NlMTAzOwogICAgZmxvYXQgbWF0MTAxOwogICAgZmxvYXQgZW5nMTAxOwogICAgZmxvYXQgY2dwYTsKfSBTdHVkZW50OwoKCmZsb2F0IGNhbGN1bGF0ZV9jZ3BhKGZsb2F0IGNzZSwgZmxvYXQgbWF0LCBmbG9hdCBlbmcpIHsKICAgIGZsb2F0IHRvdGFsX2NyZWRpdHMgPSA0LjVmICsgMy4wZiArIDMuMGY7CiAgICBmbG9hdCB3ZWlnaHRlZF9zdW0gPSAoY3NlICogNC41ZikgKyAobWF0ICogMy4wZikgKyAoZW5nICogMy4wZik7CiAgICByZXR1cm4gd2VpZ2h0ZWRfc3VtIC8gdG90YWxfY3JlZGl0czsKfQoKaW50IG1haW4oKSB7CiAgICBTdHVkZW50IHN0dWRlbnRzW01BWF9TVFVERU5UU107CiAgICBpbnQgY291bnQgPSAwOwoKCiAgICBGSUxFICppbnB1dEZpbGUgPSBzdGRpbjsKICAgIGlmIChpbnB1dEZpbGUgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiRXJyb3I6IENvdWxkIG5vdCBvcGVuIHN0dWRlbnRfaW5wdXQudHh0IGZpbGUuXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCgogICAgd2hpbGUgKGNvdW50IDwgTUFYX1NUVURFTlRTICYmCiAgICAgICAgICAgZnNjYW5mKGlucHV0RmlsZSwgIiVkICVzICVmICVmICVmIiwKICAgICAgICAgICAgICAgICAgJnN0dWRlbnRzW2NvdW50XS5pZCwKICAgICAgICAgICAgICAgICAgc3R1ZGVudHNbY291bnRdLm5hbWUsCiAgICAgICAgICAgICAgICAgICZzdHVkZW50c1tjb3VudF0uY3NlMTAzLAogICAgICAgICAgICAgICAgICAmc3R1ZGVudHNbY291bnRdLm1hdDEwMSwKICAgICAgICAgICAgICAgICAgJnN0dWRlbnRzW2NvdW50XS5lbmcxMDEpID09IDUpIHsKCgogICAgICAgIHN0dWRlbnRzW2NvdW50XS5jZ3BhID0gY2FsY3VsYXRlX2NncGEoCiAgICAgICAgICAgIHN0dWRlbnRzW2NvdW50XS5jc2UxMDMsCiAgICAgICAgICAgIHN0dWRlbnRzW2NvdW50XS5tYXQxMDEsCiAgICAgICAgICAgIHN0dWRlbnRzW2NvdW50XS5lbmcxMDEKICAgICAgICApOwogICAgICAgIGNvdW50Kys7CiAgICB9CiAgICBmY2xvc2UoaW5wdXRGaWxlKTsKCiAgICBGSUxFICpvdXRwdXRGaWxlID0gc3Rkb3V0OwogICAgaWYgKG91dHB1dEZpbGUgPT0gTlVMTCkgewogICAgICAgIHByaW50ZigiRXJyb3I6IENvdWxkIG5vdCBvcGVuIG91dHB1dC50eHQgZmlsZSBmb3Igd3JpdGluZy5cbiIpOwogICAgICAgIHJldHVybiAxOwogICAgfQoKCiAgICBjb25zdCBjaGFyICpib3JkZXIgPSAiXG4iOwoKICAgIHByaW50ZigiJS01cyAlLTEwcyAlLThzICUtOHMgJS04cyAlLTZzXG4iLCAiSUQiLCAiTmFtZSIsICJDU0UxMDMiLCAiTUFUMTAxIiwgIkVORzEwMSIsICJDR1BBIik7CiAgICBwcmludGYoIiVzIiwgYm9yZGVyKTsKCiAgICBmcHJpbnRmKG91dHB1dEZpbGUsICIlLTVzICUtMTBzICUtOHMgJS04cyAlLThzICUtNnNcbiIsICJJRCIsICJOYW1lIiwgIkNTRTEwMyIsICJNQVQxMDEiLCAiRU5HMTAxIiwgIkNHUEEiKTsKICAgIGZwcmludGYob3V0cHV0RmlsZSwgIiVzIiwgYm9yZGVyKTsKCgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlLTVkICUtMTBzICUtOC4yZiAlLTguMmYgJS04LjJmICUtNi4yZlxuIiwKICAgICAgICAgICAgICAgc3R1ZGVudHNbaV0uaWQsIHN0dWRlbnRzW2ldLm5hbWUsIHN0dWRlbnRzW2ldLmNzZTEwMywKICAgICAgICAgICAgICAgc3R1ZGVudHNbaV0ubWF0MTAxLCBzdHVkZW50c1tpXS5lbmcxMDEsIHN0dWRlbnRzW2ldLmNncGEpOwoKICAgICAgICBmcHJpbnRmKG91dHB1dEZpbGUsICIlLTVkICUtMTBzICUtOC4yZiAlLTguMmYgJS04LjJmICUtNi4yZlxuIiwKICAgICAgICAgICAgICAgIHN0dWRlbnRzW2ldLmlkLCBzdHVkZW50c1tpXS5uYW1lLCBzdHVkZW50c1tpXS5jc2UxMDMsCiAgICAgICAgICAgICAgICBzdHVkZW50c1tpXS5tYXQxMDEsIHN0dWRlbnRzW2ldLmVuZzEwMSwgc3R1ZGVudHNbaV0uY2dwYSk7CiAgICB9CgogICAgcHJpbnRmKCIlcyIsIGJvcmRlcik7CiAgICBmcHJpbnRmKG91dHB1dEZpbGUsICIlcyIsIGJvcmRlcik7CgogICAgZmNsb3NlKG91dHB1dEZpbGUpOwogICAgcHJpbnRmKCJcblN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgJWQudHh0XG4iLCBjb3VudCk7CgogICAgcmV0dXJuIDA7Cn0K