Описать структуру с именем STUDENT - C (СИ) (79122)
Формулировка задачи:
У меня такое задание, но не знаю как вывести чтобы студенты были отсортированы по возрастанию среднего балла. Помогите сделать сортировку. Заранее спасибо.
Описать структуру с именем STUDENT, содержащую следующие поля:
•фамилия и инициалы;
•номер группы;
•успеваемость (массив из пяти элементов).
Написать программу, выполняющую следующие действия:
•ввод с клавиатуры данных в массив, состоящий из десяти структур типа STUDENT; записи должны быть упорядочены по возрастанию среднего балла;
•вывод на дисплей фамилий и номеров групп для всех студентов, имеющих оценки 4 и 5;
•если таких студентов нет, вывести соответствующее сообщение.
начал делать так:
// 7 тщм.cpp : Defines the entry point for the console application. #include "stdafx.h" struct student{ char fam[15]; char inisial[10]; int grup; int marks[5]; }str[3],tmp; #define N 4.0 int _tmain(int argc, _TCHAR* argv[]) { int i,j,t,k,k2,flag=0; float avg,tmp1; float mas[3]; student str[3]={ {"Ivanov","F. P.",1102,4,3,4,3,4}, {"Popov","D. S.",1305,3,4,3,4,3}, {"Smirnov","K. G.",1208,3,4,3,4,4} }; //for (i = 0; i<3; i++){ //printf("\nStudent %i\nEnter name: ", i+1); //scanf("%s", str[i].fam); //printf("Enter group: "); //scanf("%i", &(str[i].grup)); //for (int j = 0; j<5; j++){ //printf("Enter ses %i: ", j+1); //scanf("%i", &(str[i].marks[j])); //} //} for(i=0;i<3;i++){ printf("\n\n%s ",str[i].fam); printf("%s\n",str[i].inisial); printf("%d\n",str[i].grup); for(j=0;j<5;j++) printf("%d ",str[i].marks[j]);} for(i = 0; i < 3; ++i) { avg = 0; for(j = 0; j < 5; ++j) avg += str[i].marks[j]; avg /= 5; printf("\n%4.2f\n\n",avg); mas[t=i]=avg;} for(t=0;t<3;t++) printf("%4.2f ",mas[t]); printf("\n\nball vishe %2.2f\n", N); //for(i=0;i<3;i++){ //if(avg>N){ // printf("\nF.I.O.: %s\nGruppa: %d\n ", str[i].fam, str[i].grup); // flag=1;}} //if(flag==0) // printf("\ntakih stydentov net\n"); k2=0; for (i=0; i<3; i++) { k=0; for (j=0; j<5; j++) if (str[i].marks[j]==5) { if (k!=1){ printf ( "\n This student has mark 2 %s, %d \n" , str[i].fam , str[i].grup);; k=1; k2++;} } } if (k2==0) printf ("HET DVOEK"); for(k = 0;k < 3; k++){ for(t = 0; t <2; t++) if(mas[t]>mas[t+1]){ tmp1=mas[t]; mas[t]=mas[t+1]; mas[t+1]=tmp1;}} //for(i=0;i<3;i++){ //tmp=str[i]; //str[i]=str[i+1]; //str[i+1]=tmp;}}} printf("\n"); for(t=0;t<3;t++) printf("%4.2f ",mas[t]); return 0; }
Решение задачи: «Описать структуру с именем STUDENT»
textual
Листинг программы
#include <iostream> using namespace std; struct Student { char fio[20]; int group; int marks[5]; } str[10]; int main () { setlocale(LC_ALL,"Rus"); for(int i = 0;i < 10;i++){ cout << "Введите фамилию и инициалы: "; gets(str[i].fio); cout << "Группа: "; cin >> str[i].group; cout << "Оценки: "; for(int j = 0;j < 5;j++){ cout << "Предмет " << j+1 << ": "; cin >> str[i].marks[j]; } system("cls"); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с потоками ввода-вывода
- Объявление структуры данных STUDENT с полями: fio — строка (массив символов) для хранения фамилии и инициалов студента, group — целочисленное поле для хранения номера группы, marks — массив целых чисел для хранения оценок по 5 предметам.
- Создание массива структур типа STUDENT, размер которого составляет 10 элементов.
- Ввод данных о студентах с помощью цикла for, который выполняется 10 раз. В каждой итерации происходит: — Ввод фамилии и инициалов студента с помощью функции gets, — Ввод номера группы с помощью функции cin, — Ввод оценок по 5 предметам с помощью цикла for и функции cin.
- Очистка консоли с помощью функции system(
cls
) после каждой итерации цикла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д