0 / 0 / 0
Регистрация: 01.10.2014
Сообщений: 46
1

Изменить сортировку так, чтобы в порядке увеличения возраста студенты выводились из файла

15.10.2014, 16:54. Показов 380. Ответов 0
Метки нет (Все метки)

Еще раз здравствуйте, уважаемые форумчане. Нужно изменить функцию сортировки.
Нужно изменить сортировку так, чтобы в порядке увеличения возраста студенты выводились из файла.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
#include <locale.h>
using namespace std;
const int L = 10;
struct student
{
    char fam[L];
    char iniziali[5];
    int day;
    int mon;
    int year;
};
void inputStudentFile(student x[], int&n);
void outputStudentFile(student x[], int n);
void outputStudent(student x[], int n);
void sort(student x[], int n);
int main()
{
    setlocale(LC_ALL, "Russian");
    const int N = 100;
    student a[N];
    int m;
    system("cls");
    cout.setf(ios::left);
    inputStudentFile(a, m);
    cout << "\nИсходная таблица:\n\n";
    outputStudent(a, m);
    sort(a, m); //Вывод
    outputStudentFile(a, m);
} //Вывод
 
void inputStudentFile(student x[], int&n)
{
    ifstream fin;
    char file[L];
    cout << "Введите название файла:\n"; cin >> file;
    fin.open(file);
    if (fin.fail())
    {
        cout << "Невозможно открыть файл: " << file << endl;
        getche(); exit(1);
    }
    n = 0;
    do{
        fin >> x[n].fam >> x[n].iniziali >> x[n].day >> x[n].mon >> x[n].year;
        n++;
    } while (fin.good());
    n--;
    fin.close();
}
 
void outputStudentFile(student x[], int n)
{
    ofstream fout;
    int i;
    char file[L];
    cout << "\nСохранить? "; cin >> file;
    fout.open(file);
    if (fout.fail())
    {
        cout << "Файл не сохранен " << file << endl;
        getch();
    }  for (i = 0; i<n; i++)
    if (x[i].mon == 9 || x[i].mon == 10 || x[i].mon == 11)
    {
        fout << x[i].fam << " " << x[i].iniziali << " " << x[i].day << " " << x[i].mon << " " << x[i].year << endl;
        i = n;
    } //Считывание записей
    cout << "Файл успешно сохранен";
    getch();
    fout.close();
}
void outputStudent(student x[], int n)
{
    int i;
    cout << "Фамилия   И.О        Д        М        Год\n";
    for (i = 0; i<n; i++)
        cout << setw(10) << x[i].fam << setw(11) << x[i].iniziali << setw(9) << x[i].day << setw(9) << x[i].mon << setw(11) << x[i].year << endl;
    getch();
}
void sort(student x[], int n)
{
    int i, fl;
    student t;
    do {
        fl = 0;
        for (i = 0; i<n; i++)
        if (x[i].year>x[i + 1].year)
        {
            t = x[i]; x[i] = x[i + 1]; x[i + 1] = t; fl = 1;
        }
        else if (x[i].year == x[i + 1].year)
        {
            if (x[i].mon<x[i + 1].mon)
            {
                t = x[i]; x[i] = x[i + 1]; x[i + 1] = t; fl = 1;
            }
            else if (x[i].mon == x[i + 1].mon)
            {
                if (x[i].day>x[i + 1].day)
                {
                    t = x[i]; x[i] = x[i + 1]; x[i + 1] = t; fl = 1;
                }
            }
        }
    } while (fl == 1);
    for (i = 0; i<n; i++)
    if (x[i].mon == 9 || x[i].mon == 10 || x[i].mon == 11)
    {
        cout << "\nСтуденты:\n\n";
        cout << "Фамилия   И.О        Д        М        Год\n";
        cout << setw(10) << x[i].fam << setw(11) << x[i].iniziali << setw(9) << x[i].day << setw(9) << x[i].mon << setw(11) << x[i].year << endl;
        getche();
    }
}
Заранее, спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2014, 16:54
Ответы с готовыми решениями:

Переписать сведения из файла в текстовый файл так, чтобы студенты перечислялись в порядке возрастания среднего балла
Нужно создать файл, содержащий информацию о 10 студентах(Ф.И.О.,три оценки, номер группы)....

Изменить скрипт так, чтобы выводились только бинарные файлы
Всем добрый день! Есть задание – написать скрипт, который ищет в директории файлы, группа-владелец...

Изменить массив так, чтобы сначала выводились 1,затем 0, и потом 2
Дан целочисленный массив, заполненный 0,1 и 2 в случайном порядке. изменить массив так, чтобы...

Как изменить программу чтобы здвёздочки выводились вот в таком порядке?
как изменить программу чтобы здвёздочки выводились вот в таком порядке? экран выводилась следующая...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2014, 16:54
Помогаю со студенческими работами здесь

Изменить код так, чтобы в результате выполнения программы выводились цифры, которые чаще всего встречаются
Изменить код так, чтобы в результате выполнения программы выводились цифры, которые чаще всего...

Упорядочить сведения о мужчинах с рабочим стажем больше 25 лет в порядке увеличения их возраста
По данным таблицы 6, содержащей информацию о работниках предприятия, провести упорядочивание...

Изменить программу чтобы можно было вводить матрицу и ее размерность, и чтобы выводились собственные векторы
Нашел программу для нахождения собственных значений методом вращений якоби на этом сайте...

Изменить программу так, чтобы слова в предложении были записаны в обратном порядке
Добрался я до уроков со строками. Есть пример: class Program { static void...

Изменить заданный числовой массив так, чтобы элементы были расположены в нем в обратном порядке
Доброго времени суток. Изменить заданный числовой массив так, чтобы элементы были расположены в...

Что изменить, чтобы нормально выводились русские буквы?
Как изменить конкретно эту программу, чтобы русские буквы нормально выводились в файл и на экран? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru