Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Olegovna
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 3
#1

C++, отсортировать методом выбора текстовый файл - C++

28.03.2012, 23:31. Просмотров 922. Ответов 4
Метки нет (Все метки)

В текстовом файле содержатся сведения о группе студентов в формате: запись о каждом студенте группы, которая содержит следующие сведения: фамилия, имя, отчество, год рождения, оценки по пяти предметам.
Переписать данные файла в новый текстовый файл, отсортировав их по фамилии студентов и убыванию их года рождения посредством "выбора".

Добавлено через 1 час 8 минут
*********up
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2012, 23:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос C++, отсортировать методом выбора текстовый файл (C++):

Первый массив отсортировать методом выбора, второй методом пузырька
Задание. Составить на одном из алгоритмических языков программу, запускается и...

Отсортировать методом выбора массив
Имеется массив размерностью NxN, где N = 9. Отсортировать методом выбора так,...

Отсортировать массив методом выбора
привет, помогите пожалуйста ... нужно отсортировать массив методом выбора (12...

Отсортировать слова в файле методом выбора
//*Написать программу, которая читает все слова из текстового файла, формирует...

Отсортировать по возрастанию методом простого выбора
отсортировать по возрастанию методом простого выбора одномерного массива с...

Отсортировать массив по возрастанию элементов методом выбора
M(n) – массив вещественных чисел.Отсортировать массив по возрастанию элементов...

4
rush2331
4 / 4 / 2
Регистрация: 27.03.2012
Сообщений: 13
28.03.2012, 23:53 #2
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
/*
in_file.txt:
Фамилия Имя Отчество 1992 1 2 3 4 5
Амилия Имя Отчество 2991 5 4 3 2 1
Буслаев Сергей Антонович 1233 8 4 6 23 5
Буслаев Сергей Антонович 1232 8 4 6 23 5
Говоров Петя Петрович 1422 2 2 2 2 2
Иванов Иван Иванович 5692 5 5 5 5 5
*/ 
 
#include <fstream>
 #include <iostream>
 
using namespace std;
 
struct student
{
char family[20], name[20], otc[20];
int year;
int ball[5];
};
 
 
void main()
 {   
    student students[10]; //список из 10 студентов
    ifstream fin;  // Поток fin будем использовать для чтения
    ofstream fout; // Поток fout будем использовать для записи
    
    fin.open("in_file.txt");
    fout.open("out_file.txt");
 
    //Читаем
    for (int j=0; j<10; j++){
        fin >> students[j].family >> students[j].name >> students[j].otc >> students[j].year;
        for (int i=0; i<5; i++){
            fin >> students[j].ball[i];
        }
    }
 
    /*Сортировка методом простого выбора сводится к следующим шагам: 
    1. Установить номер наибольшего элемента массива. 
    2. Поменять местами наибольший и последний элементы массива. 
    3. Оставив в покое последний элемент, выполнить пункты 1 и 2 над 
    остатком массива (массивом без последнего элемента). Пункт 3 повторять, 
    пока остаток массива не сократится до одного элемента.*/
    
    student temp;
    int t;
    
    for (int i=9; i>-1; i--){
        //находим наибольший элемент
        student max = students[0];
        for (int j=0; j<10; j++){ 
            for (int z = 0; z < strlen(students[j].family); z++){
                if (students[j].family[z] > max.family[z]){
                        max = students[j];
                        t = j;
                }
            }
        }
        temp = students[i];
        students[i] = max;
        students[t] = temp;
    }
 
    //Если одинаковые фамилии, смотрим по году рождения
    for (int i=0; i<10; i++){
        if (students[i].family[strlen(students[i].family)] == students[i+1].family[strlen(students[i].family)]){ //т.к. уже отсортированы по фамилиям
                if (students[i].year > students[i+1].year){
                    temp = students[i+1];
                    students[i+1] = students[i];
                    students[i] = temp;
                }
        }   
    }
 
 
    //Вывод в файл
    for (int j=0; j<10; j++){
        fout << students[j].family << " " << students[j].name << " " << students[j].otc << " " << students[j].year;
        for (int i=0; i<5; i++){
            fout << " " << students[j].ball[i];
        }
        fout << endl;
    }
}
1
Kuzia domovenok
2212 / 1981 / 443
Регистрация: 25.03.2012
Сообщений: 6,950
Записей в блоге: 1
29.03.2012, 11:57 #3
Цитата Сообщение от rush2331 Посмотреть сообщение
C++
1
2
3
4
5
for (int z = 0; z < strlen(students[j].family); z++){
                                if (students[j].family[z] > max.family[z]){
                                                max = students[j];
                                                t = j;
                                }
Это такой аналог strcmp, не понял?
0
Olegovna
0 / 0 / 0
Регистрация: 28.03.2012
Сообщений: 3
29.03.2012, 18:53  [ТС] #4
rush2331, огромное Вам спасибо!
0
rush2331
4 / 4 / 2
Регистрация: 27.03.2012
Сообщений: 13
29.03.2012, 20:46 #5
Kuzia domovenok
Да, просто я только учу С++ и не знаю кучу функций.
0
29.03.2012, 20:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.03.2012, 20:46
Привет! Вот еще темы с решениями:

Отсортировать значения массива по убыванию методом выбора
Есть одномерный массив. Нужно отсортировать значения по убыванию методом...

Отсортировать массив по возрастанию элементов методом выбора
M(n) – массив вещественных чисел.Отсортировать массив введенных чисел по...

Отсортировать столбцы в двумерной матрице методом выбора
в двумерной матрице отсортировать столбцы методом выбора

Отсортировать массив модифицированным методом простого выбора.
Помогите пожалуйста! Отсортировать массив модифицированным методом простого...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru