Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для a4_necromant
1 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 12

Сортировка списка по ключю

26.05.2013, 10:39. Показов 536. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вводится список вида
C++
1
2
3
4
5
6
7
                char name[20];
                char sname[20];
                char rname[20];
                float bal1;
                float bal2;
                float bal3;
                float bal4;
В списке содержится ведомость успеваемости учащихся, нужно отсортировать их по среднему балу, по убыванию.
Я начнал состовлять программу, но вознекают некоторые тркдности:
1 Файл создается, но данные туда не переносятся
2 segmentation fault во второй части программы, когда требуется отсортировать список

код:
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
#include <fstream>  ///lab 2.2 by_necromant
#include <stdio.h>
#include <cstdlib>
#include <string.h>
#include <iostream>
#include <list>
using namespace std;
 
struct studtype {
                char name[20];
                char sname[20];
                char rname[20];
                float bal1;
                float bal2;
                float bal3;
                float bal4;
                float bal_mid;
    } *Stud;
 
void print(const list<int>& some_list)
{
    for(list<int>::const_iterator iter = some_list.begin(); iter!= some_list.end(); ++iter)
        //std::cout << *iter << ' ';
        cout<< Stud[*iter].name << " " <<Stud[*iter].sname<< " " << Stud[*iter].rname << " "  << Stud[*iter].bal1 << " "  << Stud[*iter].bal2 << " "  << Stud[*iter].bal3 << " "  << Stud[*iter].bal4 << " "  << Stud[*iter].bal_mid << "\n";
    std::cout << std::endl;
}
 
int main()
{
    int kodR;
    puts("Создать  – 1 \nПросмотреть– 2 \nВыход – 0");
                scanf("%d",&kodR);
                switch(kodR) {
 
 
                    case 1:
                      {
                      int N;
                      puts("\n Сколько учащихся добавить???");
                        scanf("%d", &N);
                        Stud=new studtype[N];
 
                      for (int i=0; i < N; i++)
                       {
                        cout << "ввод строки №" << i+1 << endl;
                        cout << "фамилия#" << i+1 << " ";
                        cin >> Stud[i].name;
                        cout << "имя#" << i+1 << " ";
                        cin >> Stud[i].sname;
                        cout << "отчество#" << i+1 << " ";
                        cin >> Stud[i].rname;
                        cout << "бал 1#" << i+1 << " ";
                        cin >> Stud[i].bal1;
                        cout << "бал 2#" << i+1 << " ";
                        cin >> Stud[i].bal2;
                        cout << "бал 3#" << i+1 << " ";
                        cin >> Stud[i].bal3;
                        cout << "бал 4#" << i+1 << " ";
                        cin >> Stud[i].bal4;
                        Stud[i].bal_mid = ((Stud[i].bal1+Stud[i].bal2+Stud[i].bal3+Stud[i].bal4)/4);
 
 
                       }
 
 
                     {
                      ofstream out("in.in");
                       if (!out){
                        cout << "PANIC!!!ошибка открытия файла!!!";
                        return 1;}
                       else {
                         for (int i=0; i < N+1; i++)
                          out << Stud[i].name << " " <<Stud[i].sname<< " " << Stud[i].rname << " "  << Stud[i].bal1 << " "  << Stud[i].bal2 << " "  << Stud[i].bal3 << " "  << Stud[i].bal4 << " "  << Stud[i].bal_mid << "\n";
                          out.close();
 
                       }
 
                    {delete Stud;}
                     }
                      }
 
 
                   //puts("test");
                       case 2:
                       {
                         Stud=new studtype[100000];
                         int N;
    int digits[100000];
 
    {
    FILE* file = fopen("in.in", "r");
                int i;
            while (fscanf (file, "%s%s%s%f%f%f%f%f", (Stud[i].name), (Stud[i].sname), (Stud[i].rname),  &(Stud[i].bal1), &(Stud[i].bal2), &(Stud[i].bal3), &(Stud[i].bal4), &(Stud[i].bal_mid)) != EOF) {
                    i++;
                    Stud[i].bal_mid = digits[i];
                    }
            i=N;
            for (i=0; i < N; i++)
 
    fclose(file);}
 
    list<int> list(digits, digits+N);
 
    print(list);
    list.sort();
    list.reverse();
    print(list);
    delete Stud;
                       }
                }
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2013, 10:39
Ответы с готовыми решениями:

Бд, раскручивание по ключю
БД Access, вставляю через dataGridView. хочу в первой таблице вместо цифр соответствующие должности

Авторизация ssh по публичному ключю
Ситуация такая, есть удаленный сервер на котором сгенерированы ключи. К этому серверу нужно подключится по ssh с моего компа, используя...

"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка
Здравствуйте! Возникла проблема с программой. Тема: &quot;Сортировка двусвязного списка путем исключения элемента с минимальным значением и...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2013, 10:39
Помогаю со студенческими работами здесь

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

Сортировка списка значений словаря, по номеру заголовка, элемента списка значений
Ёу. Сижу программирую такой, и не получается отсортировать словарик мой. private static Dictionary&lt;Classic,...

Сортировка списка, главная сортировка по второму числу, второстепенная по первому числу
CardList.Sort(new Comparison&lt;int&gt;((arg1, arg2) =&gt; { return (arg1 % 10).CompareTo(arg2 % 10); })); В данном коде сортируется список...

Сортировка списка.
С клавиатуры ввести последовательность записей, содержащих данные о книге: &lt;Автор&gt;, &lt;Название книги&gt;, &lt;Год издания&gt;,...

Сортировка списка
Здравствуйте, имею подобный список , , , ]. Подскажите, как его можно отсортировать? Мне важно чтобы 2 элемент и 3 элементы были...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru