Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- struct student_info {
- int student_counter, *student_AM; /*store students data with struct*/
- char *student_names, *student_full_names;
- double *grades;
- }info;
- struct students {
- int max_AM, min_AM;
- char max_name, max_full_name, min_name, min_full_name;
- double minimum_grade, maximum_grade, average_grade;
- }input;
- int main(int argc,const char *array[]) {
- if (strcmp("input.txt", array[1])==0) {
- int i,j, position_of_minimum_grade, position_of_maximum_grade, min_AM, temp_AM;
- char temp_names, temp_full_names, max_name, max_full_name, max_AM, min_name, min_full_name;
- float temp_grades, minimum_grade, maximum_grade, average_grade, sum_grades=0;
- FILE *f;
- f=fopen("input.txt","r");
- if (f==(FILE *)NULL) {
- printf ("check 3\n");
- return -1;
- } else {
- printf ("check 2\n");
- fscanf(f, "%d\n", &(info.student_counter)); /*read studentsX_in file*/
- info.student_names=(char *)calloc(info.student_counter, sizeof(char));
- info.student_full_names=(char *)calloc(info.student_counter, sizeof(char));
- info.student_AM=(int *)calloc(info.student_counter, sizeof(int));
- info.grades=(double *)calloc(info.student_counter, sizeof(double));
- fscanf(f, info.student_names, info.student_full_names, info.student_AM, info.grades); /*read more info about studentsX_in file*/
- fclose(f);
- }
- minimum_grade=(info.grades[0]); /*find min of student grades*/
- position_of_minimum_grade=0;
- maximum_grade=info.grades[0];
- position_of_maximum_grade=0;
- for (i=0; i<info.student_counter; i++) {
- sum_grades+=info.grades[i]; /*find sum of students grades*/
- }
- for (i=1; i<info.student_counter-1; i++) {
- if (minimum_grade>info.grades[i]) {
- minimum_grade=info.grades[i];
- position_of_minimum_grade=i; /*find position of min*/
- }
- }
- min_name=info.student_names[position_of_minimum_grade]; /*put info of student who has min grade in variables before grade[] is classificated*/
- min_full_name=info.student_full_names[position_of_minimum_grade];
- min_AM=info.student_AM[position_of_minimum_grade];
- for (i=1; i<info.student_counter-1; i++) { /*find max of students grades*/
- if (maximum_grade<info.grades[i]) {
- maximum_grade=info.grades[i];
- position_of_maximum_grade=i; /*find position of max*/
- }
- }
- max_name=info.student_names[position_of_maximum_grade]; /*put info of student who has max grade in variables before grade[] is classsificated*/
- max_full_name=info.student_full_names[position_of_maximum_grade];
- max_AM=info.student_AM[position_of_maximum_grade];
- average_grade=sum_grades/info.student_counter; /*find average grade*/
- for (i=1; i<info.student_counter-1; i++) { /**/
- for (j==info.student_counter-1; j>i+1; j--) {
- if (info.grades[j-1]>info.grades[j]) {
- temp_grades=info.grades[j-1];
- info.grades[j-1]=info.grades[j];
- info.grades[j]=temp_grades;
- temp_names=info.student_names[j-1]; /*correspondance with full names and A.M.*/
- info.student_names[j-1]=info.student_names[j];
- info.student_names[j]=temp_names;
- temp_full_names=info.student_full_names[j-1];
- info.student_full_names[j-1]=info.student_full_names[j];
- info.student_full_names[j]=temp_full_names;
- temp_AM=info.student_AM[j-1];
- info.student_AM[j-1]=info.student_AM[j];
- info.student_AM[j]=temp_AM;
- } else if (info.grades[j-1]==info.grades[j]) {
- if (info.student_AM[j-1]>info.student_AM[j]) {
- temp_AM=info.student_AM[j-1];
- info.student_AM[j-1]=info.student_AM[j];
- info.student_AM[j]=temp_AM;
- temp_names=info.student_names[j-1]; /*correspondance with full names*/
- info.student_names[j-1]=info.student_names[j];
- info.student_names[j]=temp_names;
- temp_full_names=info.student_full_names[j-1];
- info.student_full_names[j-1]=info.student_full_names[j];
- info.student_full_names[j]=temp_full_names;
- }
- }
- }
- }
- } else if (strcmp("output.txt", array[2])==0) {
- FILE *foo;
- foo=fopen("output.txt", "w");
- if (foo==(FILE *)NULL) {
- return -1;
- } else {
- fprintf (foo, "max: %d %d %d %.2f\n",input.max_name, input.max_full_name, input.max_AM, input.maximum_grade); /*write studentsX_out file*/
- fprintf (foo, "min: %d %d %d %.2f\n", input.min_name, input.min_full_name, input.min_AM, input.minimum_grade);
- fprintf (foo, "average: %.2f\n", input.average_grade);
- fprintf (foo, "%d %d %d %.2f\n", *info.student_names, *info.student_full_names, *info.student_AM, *info.grades);
- fclose(foo);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement