Упорядочить список студентов по году рождению - C (СИ)
Формулировка задачи:
Язык Си
Дан файл, содержащий сведение о студентах, включающие в себя его фамилию имя, год рождение, номер группы и оценки, по каким либо трем предметам.
Составить программу, которая выводит:
-Данные отличников;
-Данные студентов, получивыших по какому либо предмету оценку-2;
-Списко студентов, фамилий которых начинаются с буквы “A”;
-Упорядочить список по году рождению
Решение задачи: «Упорядочить список студентов по году рождению»
textual
Листинг программы
// 12_2.cpp: определяет точку входа для консольного приложения. //переписать 12_1 с использованием текстовых файлов - чтение из файла и запись в файл результата. #include "stdafx.h" #include <math.h> #include <string.h> #include <tchar.h> #include <conio.h> #include <locale> #include <stdio.h> #include <iostream> using namespace std; struct student_list { char first_name[15]; char second_name[15]; char two_name[15]; struct { unsigned int day,month,year; } brithday; }; void main() { FILE *input, *output; int i,n=5; char s[255]; struct student_list bd [10]; student_list sort[10]; input=fopen("input.dat","r"); i=0; while(i<n) { fscanf(input,"%s",&bd[i].first_name); fscanf(input,"%s",&bd[i].second_name); fscanf(input,"%s",&bd[i].two_name); fscanf(input,"%d",&bd[i].brithday.day); fscanf(input,"%d",&bd[i].brithday.month); fscanf(input,"%d",&bd[i].brithday.year); i++; } setlocale(LC_ALL,"Russian"); cout<<"\tСписок группы:"<<endl; cout<<"--------------------------------------------------------------------------------"<<endl; setlocale(LC_ALL,"Russian"); for(i=0;i<n;i++) { cout<<"№ "<<i+1<<"| Ф.И.О. студента: ";setlocale(LC_ALL,"Russian");cout<<bd[i].second_name<<" "<<bd[i].first_name<<" "<<bd[i].two_name;setlocale(LC_ALL,"Russian");cout<<"|Дата рождения: "<<bd[i].brithday.day<<"/"<<bd[i].brithday.month<<"/"<<bd[i].brithday.year<<"|"<<endl; } cout<<"------------------------------------------------------------------------------"; for (i=0;i<n-1;i++) { for (int g=i+1;g<n;g++) { if(bd[i].brithday.year>bd[g].brithday.year) { sort[1]=bd[i]; bd[i]=bd[g]; bd[g]=sort[1]; } } } cout<<"\tСписок группы упорядоченный по возрастанию году рождения :"<<endl; cout<<"--------------------------------------------------------------------------------"<<endl; setlocale(LC_ALL,"Russian"); for(i=0;i<n;i++) { cout<<"№ "<<i+1<<"| Ф.И.О. студента: ";setlocale(LC_ALL,"Russian");cout<<bd[i].second_name<<bd[i].first_name<<bd[i].two_name;setlocale(LC_ALL,"Russian");cout<<"|Дата рождения: "<<bd[i].brithday.day<<"/"<<bd[i].brithday.month<<"/"<<bd[i].brithday.year<<"|"<<endl; } cout<<"------------------------------------------------------------------------------"; _getch(); }
Объяснение кода листинга программы
Код представлен на языке C и выполняет следующие действия:
- Считывание данных из файла: Программа открывает файл
input.dat
для чтения и считывает данные о студентах в массив структур student_list. Файл содержит информацию о пяти студентах, включая их ФИО, дату рождения и другую дополнительную информацию. - Вывод данных в консоль: Программа выводит данные о студентах в консоль в следующем формате: №, ФИО студента, Дата рождения.
- Упорядочивание списка студентов по году рождения: Код использует алгоритм сортировки пузырьком для упорядочивания списка студентов по году рождения. Он сравнивает года рождения двух соседних студентов и, если год рождения первого студента больше, меняет их местами. Этот процесс повторяется до тех пор, пока список не будет упорядочен.
- Запись упорядоченного списка в файл: Наконец, программа записывает упорядоченный список студентов в файл
output.dat
. Важно отметить, что код не обрабатывает возможные ошибки, которые могут возникнуть при работе с файлами или при чтении и записи данных. Это простое упражнение, предназначенное для демонстрации базовых навыков программирования на C и работы с массивами и структурами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д