Посчитать среднюю оценку для каждого студента - C (СИ)
Формулировка задачи:
Здравствуйте, нужна помощь в решении проблемы...
Дана задача: есть 8 студентов, ими сдано 4 экзамена. Посчитать среднюю оценку для каждого студента, а также найти лучшую и худшую оценки среди всех студентов.
Программу написал, но нужно изменить программу так, чтобы использовался составной тип данных (структура) и массив с элементами этого составного типа.
Начал переделывать, но что-то не получается совсем...
#include <stdio.h> #define students 8 //Число студентов #define exams 4 // Число экзаменов/рейтингов int minimum (int [] [exams], int, int); int maximum (int [] [exams], int, int); float average (int [], int); void printArray ( int [] [exams], int, int); int main() { int student, studentGrades [students][exams]; // Объявление массива for(int i = 0; i < students; i++) { for(int j = 0; j < exams; j++) { printf("Input %i %i:\n", i, j); scanf("%i", &studentGrades[i][j]); } } printf ("Array:\n"); printArray ( studentGrades, students, exams ); printf ("\n\nThe worst grade: %d\nThe best grade: %d\n", minimum ( studentGrades, students, exams ), maximum ( studentGrades, students, exams )); for ( student = 0; student < students; student++ ) printf ( "Average grade of the student %d is equal %.2f\n", student, average ( studentGrades [student], exams ) ); int d; scanf("%i", &d); return 0; } //Поиск минимальной оценки int minimum ( int grades[] [exams], int pupils, int tests ) { int i, j, lowGrade = 100; for ( i = 0; i < pupils; i++ ) for ( j = 0; j < tests; j++ ) if ( grades[i][j] < lowGrade ) lowGrade = grades[i][j]; return lowGrade; } //Поиск максимальной оценки int maximum ( int grades[] [exams], int pupils, int tests ) { int i, j, highGrade = 0; for ( i = 0; i < pupils; i++ ) for ( j = 0; j < tests; j++ ) if ( grades[i][j] > highGrade ) highGrade = grades[i][j]; return highGrade; } //Определение средней оценки для каждого студента float average ( int setOfGrades [], int tests) { int i, total = 0; for ( i = 0; i < tests; i++) total +=setOfGrades[i]; return (float) (total) / tests; } //Вывод массива void printArray( int grades[] [exams], int pupils, int tests) { int i, j; printf ("Exam N\t\t\t [0] [1] [2] [3]"); for ( i = 0; i < pupils; i++) { printf ("\nGrades of the student [%d] ", i); for ( j = 0; j < tests; j++ ) printf ("%-5d", grades[i][j]); } }
#include <stdio.h> #define students 8 //Число студентов #define exams 4 // Число экзаменов/рейтингов int minimum (int [] [exams], int, int); int maximum (int [] [exams], int, int); float average (int [], int); void printArray ( int [] [exams], int, int); struct student0 { int id; int exam[exams]; }; int main() { student0 s[students]; for(int i = 0; i < students; i++) { for(int j = 0; j < exams; j++) { printf("Input %i %i:\n", i, j); scanf("%i", &studentGrades[i][j]); } } printf ("Array:\n"); printArray ( s, students, exams ); printf ("\n\nThe worst grade: %d\nThe best grade: %d\n", minimum ( s, students, exams ), maximum ( s, students, exams )); for ( student = 0; student < students; student++ ) printf ( "Average grade of the student %d is equal %.2f\n", student, average ( studentGrades [student], exams ) ); // ***Вот тут как изменить?*** int d; scanf("%i", &d); return 0; } //Поиск минимальной оценки int minimum ( student0 s[] [exams], int pupils, int tests ) { int i, j, lowGrade = 100; for ( i = 0; i < pupils; i++ ) for ( j = 0; j < tests; j++ ) if (s[i].exam[j] < lowGrade ) if ( s[i].exam[j] < lowGrade ) lowGrade = s[i].exam[j]; return lowGrade; } //Поиск максимальной оценки int maximum ( student0 s[] [exams], int pupils, int tests ) { int i, j, highGrade = 0; for ( i = 0; i < pupils; i++ ) for ( j = 0; j <tests; j++ ) if ( s[i].exam[j] > highGrade ) highGrade = s[i].exam[j]; return highGrade; } //Определение средней оценки для каждого студента float average ( student0 s, int tests) { int i, total = 0; for ( i = 0; i < tests; i++) total +=s.exam[i]; return (float) (total) / tests; } //Вывод массива void printArray(student0 s, int pupils, int tests) { int i, j; printf ("Exam N\t\t\t [0] [1] [2] [3]"); for ( i = 0; i < pupils; i++) { printf ("\nGrades of the student [%d] ", i); for ( j = 0; j < tests; j++ ) printf ("%-5d", s[i].exam[j]); } }
Решение задачи: «Посчитать среднюю оценку для каждого студента»
textual
Листинг программы
studentGrades [students][exams]; // Объявление массива
Объяснение кода листинга программы
- В этом коде объявляется массив studentGrades, который представляет собой двухмерный массив, где первый индекс относится к студентам, а второй индекс относится к экзаменам.
- Каждый элемент массива studentGrades содержит оценку студента по определенному экзамену.
- Переменная students указывает количество студентов.
- Переменная exams указывает количество экзаменов.
- Код затем заполняет массив studentGrades оценками студентов по каждому экзамену.
- Затем код вычисляет среднюю оценку для каждого студента, суммируя все оценки по каждому студенту и деля на общее количество экзаменов.
- Наконец, код выводит результаты на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д