Переписать программу на C - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день, написал программу на языке С++ ,но нужно переписать ее на язык С, помогите пожалуйста кто разбирается.
#include "stdafx.h"
#include 
#include  
#include 
#define str_len 30                               
#define size 30  
int choice;
using namespace std;
struct Students
{
    char fio[str_len];
    int year;
    int group;
    double phis;
    double math;
    double inf;
    double chem;
    double srb;
};
 
struct Students stud[size];
int current_size = 0;
double mark;
 
void Choice();
void enter_new();
double sr_ball();
void out(double);

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE, "Russian");
    cout << "Данных нет" << endl;
    do
    {
        cout << "Введите:" << endl;
        Choice();
        cin >> choice;
        switch (choice)
        {
        case 1:  enter_new();   break;
        case 2:  mark = sr_ball();  break;
        case 3:  out(mark);  break;
        }
    } while (choice != 3);
    _getch();
}

void Choice() {
    cout << "1-для ввода новой записи" << endl;
    cout << "2-для вычисления среднего балла" << endl;
    cout << "3-для вывода списка студентов со средним баллом > общего ср балла" << endl;
    cout << "4-для выхода" << endl;
}
 
void enter_new()
{
    cout << "Ввод информации" << endl;
    if (current_size < size)
    {
        cout << endl << "ФИО студента: " << endl;
        cin >> stud[current_size].fio;
        cout << "Год рождения: " << endl;
        cin >> stud[current_size].year;
        cout << "Группа: " << endl;
        cin >> stud[current_size].group;
        cout << "Оценка по физике " << endl;
        cin >> stud[current_size].phis;
        cout << "Оценка по математике " << endl;
        cin >> stud[current_size].math;
        cout << "Оценка по информатике " << endl;
        cin >> stud[current_size].inf;
        cout << "Оценка по химии " << endl;
        cin >> stud[current_size].chem;
        stud[current_size].srb = (stud[current_size].phis + stud[current_size].math + stud[current_size].inf + stud[current_size].chem) / 4;
        cout << "Средний балл: " << stud[current_size].srb << endl;
        current_size++;
    }
    else
        cout << "Введено максимальное кол-во строк";
}
 
double sr_ball()
{
    double sr = 0, ball = 0;
    int j = 0;
    for (int i = 0; i < current_size; i++)
    {
        ball += stud[i].srb;
        j++;
    }
    sr = ball / j;
    cout << "Общий средний балл: " << sr;
    cout << endl;
    return sr;
}
 
void out(double mark)
{
    int num, k;
    cout << "Введите номер группы: ";
    cin >> num;
    cout << "Список студентов со средним баллом > общего среднего балла: " << endl;
    for (int i = 0; i < current_size; i++)
    {
        if (num == stud[i].group && mark < stud[i].srb)
            cout << stud[i].fio << endl;
    }
}

Решение задачи: «Переписать программу на C»

textual
Листинг программы
#include <stdio.h>
#include "stdafx.h"
#include <conio.h>
#include <windows.h>
#define str_len 30
#define size 30
int choice;
 
struct Students
{
    char fio[str_len];
    int year;
    int group;
    double phis;
    double math;
    double inf;
    double chem;
    double srb;
};
 
struct Students stud[size];
 
int current_size = 0;
double mark;
 
void Choice();
void enter_new();
double sr_ball();
void out(double);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE, "Russian");
    printf("Данных нет\n");
    do
    {
        printf("Введите:\n");
        Choice();
        scanf("%d", &choice);
        switch (choice)
        {
        case 1:  enter_new();   break;
        case 2:  mark = sr_ball();  break;
        case 3:  out(mark);  break;
        }
    } while (choice != 3);
    _getch();
    return 0;
}
 
 
void Choice() {
    printf("1-для ввода новой записи\n");
    printf("2-для вычисления среднего балла\n");
    printf("3-для вывода списка студентов со средним баллом > общего ср балла\n");
    printf("4-для выхода\n");
}
 
void enter_new()
{
    printf("Ввод информации\n");
    if (current_size < size)
    {
        printf("\nФИО студента: \n");
        scanf("%30s", stud[current_size].fio);
        printf("Год рождения: \n");
        scanf("%d", &stud[current_size].year);
        printf("Группа: \n");
        scanf("%d",&stud[current_size].group);
        printf("Оценка по физике \n");
        scanf("%lf", &stud[current_size].phis);
        printf("Оценка по математике \n");
        scanf("%lf", &stud[current_size].math);
        printf("Оценка по информатике \n");
        scanf("%lf", &stud[current_size].inf);
        printf("Оценка по химии \n");
        scanf("%lf", &stud[current_size].chem);
        stud[current_size].srb = (stud[current_size].phis + stud[current_size].math + stud[current_size].inf + stud[current_size].chem) / 4.0;
        printf("Средний балл: %lf\n", stud[current_size].srb);
        current_size++;
    }
    else
        printf("Введено максимальное кол-во строк");
}
 
double sr_ball()
{
    double sr = 0, ball = 0;
    int j = 0;
    for (int i = 0; i < current_size; i++)
    {
        ball += stud[i].srb;
        j++;
    }
    sr = ball / j;
    printf("Общий средний балл: %lf\n", sr);
    return sr;
}
 
void out(double mark)
{
    int num, k;
    printf("Введите номер группы: ");
    scanf("%d", &num);
    printf("Список студентов со средним баллом > общего среднего балла: \n");
    for (int i = 0; i < current_size; i++)
    {
        if (num == stud[i].group && mark < stud[i].srb)
            printf("%s\n", stud[i].fio);
    }
}

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

  1. Объединение и может вызвать проблемы, поскольку они могут включать несовместимые заголовочные файлы.
  2. Использование функции setlocale() для установки локали ввода-вывода.
  3. Программа считывает данные, пока пользователь не введет число 3.
  4. Структура данных Students содержит поля для имени, года рождения, группы, оценок по физике, математике, информатике, химии и среднего балла.
  5. Массив stud содержит информацию о студентах.
  6. Переменная current_size отслеживает количество заполненных записей в массиве stud.
  7. Функция Choice() предлагает пользователю ввести число, соответствующее одному из четырех вариантов выбора.
  8. Функция enter_new() используется для ввода информации о новом студенте.
  9. Функция sr_ball() вычисляет средний балл всех студентов.
  10. Функция out() позволяет пользователю ввести номер группы и выводит имена студентов со средним баллом меньше указанного.

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


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

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

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