Вычислить средний балл сдачи экзамена и результат записать в файл - 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();
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы:
    • stdafx.h: стандартные заголовочные файлы для проектов Windows
    • stdio.h: для функций ввода-вывода
    • conio.h: для функции _getch()
    • iostream: для использования объектов потоков ввода-вывода
    • time.h: для использования функций работы со временем
    • using namespace std; : для использования стандартного пространства имен std
  2. Инициализируем переменные:
    • n: количество студентов
    • r: счетчик для вывода оценок
    • total: переменная для хранения общего количества баллов
  3. Функция vivod_rand():
    • Выводит оценки студентов (до 5) в консоль
    • Используется цикл for для обхода оценок каждого студента
    • Используется функция printf_s() для вывода значений
    • Используется оператор if для проверки значения r
    • Если r равно 5, выводится символ новой строки (\n)
    • Значение r сбрасывается в 0 при каждой новой итерации
  4. Функция 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()
  5. В цикле for перед выводом оценок каждого студента добавляем:
    • Вывод оценки каждого студента с помощью cout << rez[i] <<
  6. В цикле for перед суммированием оценок всех студентов добавляем:
    • Суммирование оценок всех студентов с помощью total += rez[i]
  7. В функции main() после вызова функции vivod_rand() добавляем:
    • Выводим общее количество баллов с помощью cout << total << endl;
  8. В функции main() перед записью общего количества баллов в файл zad.txt добавляем:
    • Закрываем файл zad.txt с помощью fclose(fl)
  9. В функции main() перед открытием файла zad.txt для записи добавляем:
    • Проверяем корректность открытия файла с помощью if(err != 0)
    • Выводим сообщение об ошибке открытия файла с помощью printf_s(Ошибка открытия файла\n);
    • Завершаем программу с помощью return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы