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

Готовая программа, но не работает сортировка

03.05.2018, 17:13. Показов 1455. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помочь с программой, в строках 17-36 заключается ошибка, необходимо чтобы сортировало методом пузырька сначала по фамилии потом по году рождения.
Буду очень признателен вашей помощи

------------------------------------------------------------------------------
вот данные в текстовом файле:
Веенеев 1999 5 4 5 4 5
Иванов 2000 5 3 3 4 5
Петров 1998 3 3 3 3 3
Сидоров 1999 4 5 4 3 4
-------------------------------------------------------------------------------



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
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
struct University {
string name;
int year, pred1, pred2, pred3, pred4, pred5;
void print() {
out << name << year << pred1 << pred2<< pred3<< pred4<< pred5;
}
};
 
void sort (University* a, int n)
{
 
University temp;
int i, j;
for (i = 0; j < n - 1; i++)
for (j = n - 1; j > i; j--) {
if (a[j].name < a[j - 1].year || (a[j].name == a[j - 1].name && a[j].year < a[j - 1].year))
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;}
};
 
sort (mas, n);
for (int i = 0; i < n; ++i)
{
mas[i].print();
 
}
}
int main() {
int x, i(0);
cin >> x;
University mas[20];
while (!in.eof()) 
{
in >> mas[i].name;
in >> mas[i].year;
in >> mas[i].pred1;
in >> mas[i].pred2;
in >> mas[i].pred3;
in >> mas[i].pred4;
in >> mas[i].pred5;
++i;
}   
in.close();
out.close();
 
system("pause");
return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2018, 17:13
Ответы с готовыми решениями:

Готовая программа, но не работает вывод на экран
Очень прошу помочь с выводом данных из всех классов на экран в главной функции. Не могу понять в чем проблема Вот код программы: ...

готовая программа на си не работает в компиляторе GCC 4.3
Здравствуйте, формучане. Прошу вашей помощи. писала студенту программки в Microsoft Visual C++ 2008 Express Editor (язык си). Но педагог...

Не правильно работает программа(Сортировка)
Помогите понять почему не правильно работает сортировка в этой программе #include &lt;iostream&gt; using namespace std; int...

27
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 19:05
Вызов должен быть из main().
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 19:16  [ТС]
nmcf, вообще не вразумляю) По вашим 22к сообщениям явно можно понять, что что-то вы смыслите) Подскажи как вообще начать эту сортировку? Там же вообще имя и год сравнивается, так как же мне сравнить разные типы?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 19:21
Сравнивать надо соответствующие поля. Там так и есть, кроме первой части. Исправь.
C++
1
a[j].name < a[j - 1].name ||
И вызов ставь после считывания.
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 19:24  [ТС]
nmcf, Вы хотите сказать здесь нет ошибок? у меня внизу sort (mas, n); ошибки подчёркивает. При этом весь этот кусок после считывания?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
University temp;
    int i, j;
    for (i = 0; j < n - 1; i++)
        for (j = n - 1; j > i; j--) {
            if (a[j].name < a[j - 1].name ||(a[j].name == a[j - 1].name && a[j].year < a[j - 1].year))
                temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;}
};
 
sort (mas, n);
for (int i = 0; i < n; ++i)
{
mas[i].print();
 
}
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 19:28
Цитата Сообщение от WeAreDogs Посмотреть сообщение
у меня внизу sort (mas, n); ошибки подчёркивает
Я же сказал, что вызов должен быть в main(). Почем он здесь стоит? Ты представляешь последовательность выполнения?
Сначала идёт считывание из файла, после - сортировка и вывод.
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 19:36  [ТС]
Ну допустим вот, но в sort (mas, n); что-то точно не правильно)


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
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
struct University {
    string name;
    int year, pred1, pred2, pred3, pred4, pred5;
    void print() {
        out << name << year << pred1 << pred2 << pred3 << pred4 << pred5;
    }
};
 
 
int main() {
    int x, i(0);
    cin >> x;
    University mas[20];
    while (!in.eof())
    {
        in >> mas[i].name;
        in >> mas[i].year;
        in >> mas[i].pred1;
        in >> mas[i].pred2;
        in >> mas[i].pred3;
        in >> mas[i].pred4;
        in >> mas[i].pred5;
        ++i;
    }
 
    void sort(University* a, int n)
    {
 
        University temp;
        int i, j;
        for (i = 0; j < n - 1; i++)
            for (j = n - 1; j > i; j--) {
                if (a[j].name < a[j - 1].name || (a[j].name == a[j - 1].name && a[j].year < a[j - 1].year))
                    temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
            }
    };
 
    sort(mas, n);
    for (int i = 0; i < n; ++i)
    {
        mas[i].print();
 
    }
 
    in.close();
    out.close();
 
    system("pause");
    return 0;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 19:51
Вызов, а не сама функция. Плохо вас учат.
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
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
struct University {
    string name;
    int year, pred1, pred2, pred3, pred4, pred5;
    void print() {
        out << name << year << pred1 << pred2 << pred3 << pred4 << pred5;
    }
};
 
    void sort(University* a, int n)
    {
 
        University temp;
        int i, j;
        for (i = 0; j < n - 1; i++)
            for (j = n - 1; j > i; j--) {
                if (a[j].name < a[j - 1].name || (a[j].name == a[j - 1].name && a[j].year < a[j - 1].year))
                    temp = a[j];
                a[j] = a[j - 1];
                a[j - 1] = temp;
            }
    };
 
 
int main()
{
    int x, i(0);
    cin >> x;
    University mas[20];
    while (!in.eof())
    {
        in >> mas[i].name;
        in >> mas[i].year;
        in >> mas[i].pred1;
        in >> mas[i].pred2;
        in >> mas[i].pred3;
        in >> mas[i].pred4;
        in >> mas[i].pred5;
        ++i;
    }
 
 
    sort(mas, n);
    for (int i = 0; i < n; ++i)
    {
        mas[i].print();
 
    }
 
    in.close();
    out.close();
 
    system("pause");
    return 0;
}
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 19:54  [ТС]
nmcf, Благодарю, но не могли бы сказать что пишется в этом месте?
C++
1
2
3
4
5
6
sort(mas, n);
    for (int i = 0; i < n; ++i)
    {
        mas[i].print();
 
    }
я не понимаю что именно нужно написать в скобочках. n подчёркнута как ошибка. расскажете?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 20:03
C++
1
sort(mas, i);
Цикл сделай по j до i. А n вообще убери.
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 20:14  [ТС]
nmcf, Неудобно просить конечно, но могли бы вы написать что имеете ввиду?

C++
1
2
3
4
5
6
sort(mas, i);
    for (int i = 0; i < n; ++i)
    {
        mas[i].print();
 
    }
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 20:21
В цикле замени i -> j, n -> i.
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 20:48  [ТС]
Блин да сколько уже можно эту программу мучить, она не работает просто !



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
#include <fstream>
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
struct University {
    string name;
    int year, pred1, pred2, pred3, pred4, pred5;
    void print() {
        out << name << year << pred1 << pred2 << pred3 << pred4 << pred5;
    }
};
 
void sort(University* a, int n)
{
 
    University temp;
    int i, j;
    for (i = 0; j < n - 1; i++)
        for (j = n - 1; j > i; j--) {
            if (a[j].name < a[j - 1].name || (a[j].name == a[j - 1].name && a[j].year < a[j - 1].year))
                temp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = temp;
        }
};
 
 
int main()
{
    int i(0);
    
    University mas[20];
    while (!in.eof())
    {
        in >> mas[i].name;
        in >> mas[i].year;
        in >> mas[i].pred1;
        in >> mas[i].pred2;
        in >> mas[i].pred3;
        in >> mas[i].pred4;
        in >> mas[i].pred5;
        ++i;
    }
 
    
    sort(mas, i);
    for (int j = 0; j < i; ++j)
    {
        mas[j].print();
 
    }
 
    in.close();
    out.close();
 
    system("pause");
    return 0;
}
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 21:19
Что не работает? Вывод есть?
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 21:41  [ТС]
вот
Миниатюры
Готовая программа, но не работает сортировка  
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 21:42  [ТС]
заново собрал и запустил, то вот
Миниатюры
Готовая программа, но не работает сортировка  
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 21:43  [ТС]
и вот пересоздал проект заново в новой папке
Миниатюры
Готовая программа, но не работает сортировка  
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 22:17
Антивирус?
0
1 / 1 / 0
Регистрация: 16.03.2016
Сообщений: 147
03.05.2018, 23:04  [ТС]
nmcf, обычный защитник виндовс на вин 10. А у вас эта программа работает?
Вложения
Тип файла: txt input.txt (93 байт, 3 просмотров)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.05.2018, 23:08
Цитата Сообщение от WeAreDogs Посмотреть сообщение
А у вас эта программа работает?
Не проверял.
Так сборка проходит или нет? К файлам полный путь укажи, если запускаешь из среды.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2018, 23:08
Помогаю со студенческими работами здесь

Готовая программа
Может кому нужна прога Program Zavdanya_3; Uses crt; Type masiv=arrayof Integer; Var F,f1:file of integer; y,R:byte; ...

Готовая программа
Здравствуйте!Как в ms visual studio 2010 сделать свой проект (написан на winforms) окончательной готовой программой, чтобы программа на...

Дерево. Готовая программа на 95%
Вот само дерево. #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int todor=0; struct Node { int x; //То, что...

Массивы ГОТОВАЯ программа
Помогите пожалуйста, неправильно отрабатывает программа Лаб.роб №3 Посмотрите пожалуйста, вроде все правильно сделал, а она не...

Пузырьковая сортировка. Не понимаю как работает программа
Есть программа, которая использует пузырьковую сортировку. Не могу понять как она работает начиная с 50 строки. Зачем там конструкции if...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru