Вычислить средний балл сдачи экзамена и результат записать в файл - C (СИ)
Формулировка задачи:
Результат сдачи экзамена группой из N студентов находятся в массиве REZ. Вычислить средний балл сдачи экзамена и результат записать в файл. Написал код, который рандомно берет числа не превышающие 5. Но идет косяк с рандомом и считать отказывается. И пользователь задает к-во чисел.
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <time.h> using namespace std; int n,r; int *rez = new (int[n]), count = 0; int vivod_rand(){ for (int i = 0; i < 4; i++) { r++; printf_s("%d ", rez[i]); if (r == 5) { printf_s("\n"); r = 0; } } return 0; } void main() { setlocale(LC_ALL, ".1251"); srand(time_t(NULL)); FILE *fl; errno_t err; int i=0; float total = 0; err = fopen_s(&fl, "zad.txt", "w"); cout << "Введите количество студентов: "; cin >> n; for (int i = 0; i<n; i++); { rez[i] = rand() % 5; cout << rez[i] << " "; } vivod_rand(); for (int i = 0; i < n; ++i); total += rez[i]; fprintf_s(fl, "%f", total); _getch(); }
Решение задачи: «Вычислить средний балл сдачи экзамена и результат записать в файл»
textual
Листинг программы
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <iostream> #include <time.h> using namespace std; int n,r; int vivod_rand(){ for (int i = 0; i < 4; i++) { r++; printf_s("%d ", rez[i]); if (r == 5) { printf_s("\n"); r = 0; } } return 0; } void main() { setlocale(LC_ALL, ".1251"); srand(time_t(NULL)); FILE *fl; errno_t err; int i=0; float total = 0; err = fopen_s(&fl, "zad.txt", "w"); cout << "Введите количество студентов: "; cin >> n; int *rez = new (int[n]), count = 0; for (int i = 0; i<n; i++); { rez[i] = rand() % 5; cout << rez[i] << " "; } vivod_rand(); for (int i = 0; i < n; ++i); total += rez[i]; fprintf_s(fl, "%f", total); _getch(); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
- stdafx.h: стандартные заголовочные файлы для проектов Windows
- stdio.h: для функций ввода-вывода
- conio.h: для функции _getch()
- iostream: для использования объектов потоков ввода-вывода
- time.h: для использования функций работы со временем
- using namespace std; : для использования стандартного пространства имен std
- Инициализируем переменные:
- n: количество студентов
- r: счетчик для вывода оценок
- total: переменная для хранения общего количества баллов
- Функция vivod_rand():
- Выводит оценки студентов (до 5) в консоль
- Используется цикл for для обхода оценок каждого студента
- Используется функция printf_s() для вывода значений
- Используется оператор if для проверки значения r
- Если r равно 5, выводится символ новой строки (\n)
- Значение r сбрасывается в 0 при каждой новой итерации
- Функция main():
- Устанавливаем локаль на русский язык
- Инициализируем генератор случайных чисел с помощью srand(time_t(NULL))
- Открываем файл
zad.txt
для записи с помощью fopen_s() - Считываем количество студентов с помощью cin >> n
- Выделяем память для массива оценок с помощью new
- Используем цикл for для заполнения массива оценок случайными числами от 0 до 4
- Выводим оценки каждого студента с помощью cout << rez[i] <<
- Вызываем функцию vivod_rand() для вывода оценок
- Используем цикл for для суммирования оценок всех студентов
- Записываем общее количество баллов в файл
zad.txt
с помощью fprintf_s() - Ждем нажатия клавиши с помощью _getch()
- В цикле for перед выводом оценок каждого студента добавляем:
- Вывод оценки каждого студента с помощью cout << rez[i] <<
- Вывод оценки каждого студента с помощью cout << rez[i] <<
- В цикле for перед суммированием оценок всех студентов добавляем:
- Суммирование оценок всех студентов с помощью total += rez[i]
- В функции main() после вызова функции vivod_rand() добавляем:
- Выводим общее количество баллов с помощью cout << total << endl;
- В функции main() перед записью общего количества баллов в файл
zad.txt
добавляем:- Закрываем файл
zad.txt
с помощью fclose(fl)
- Закрываем файл
- В функции main() перед открытием файла
zad.txt
для записи добавляем:- Проверяем корректность открытия файла с помощью if(err != 0)
- Выводим сообщение об ошибке открытия файла с помощью printf_s(
Ошибка открытия файла\n
); - Завершаем программу с помощью return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д