Описать структуру с именем 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");
    }

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

  1. Подключение необходимых библиотек для работы с потоками ввода-вывода
  2. Объявление структуры данных STUDENT с полями: fio — строка (массив символов) для хранения фамилии и инициалов студента, group — целочисленное поле для хранения номера группы, marks — массив целых чисел для хранения оценок по 5 предметам.
  3. Создание массива структур типа STUDENT, размер которого составляет 10 элементов.
  4. Ввод данных о студентах с помощью цикла for, который выполняется 10 раз. В каждой итерации происходит: — Ввод фамилии и инициалов студента с помощью функции gets, — Ввод номера группы с помощью функции cin, — Ввод оценок по 5 предметам с помощью цикла for и функции cin.
  5. Очистка консоли с помощью функции system(cls) после каждой итерации цикла.

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


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

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

8   голосов , оценка 3.625 из 5