Переписать программу на 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); } }
Объяснение кода листинга программы
- Объединение
и может вызвать проблемы, поскольку они могут включать несовместимые заголовочные файлы. - Использование функции setlocale() для установки локали ввода-вывода.
- Программа считывает данные, пока пользователь не введет число 3.
- Структура данных
Students
содержит поля для имени, года рождения, группы, оценок по физике, математике, информатике, химии и среднего балла. - Массив
stud
содержит информацию о студентах. - Переменная
current_size
отслеживает количество заполненных записей в массивеstud
. - Функция Choice() предлагает пользователю ввести число, соответствующее одному из четырех вариантов выбора.
- Функция enter_new() используется для ввода информации о новом студенте.
- Функция sr_ball() вычисляет средний балл всех студентов.
- Функция out() позволяет пользователю ввести номер группы и выводит имена студентов со средним баллом меньше указанного.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д