Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2018, 17:16   #1
WeAreDogs
 
Регистрация: 03.05.2018
Сообщений: 3
По умолчанию Готовая программа, но не работает сортировка

Прошу помочь с программой, в выделенном тексте заключается ошибка, необходимо чтобы сортировало методом пузырька сначала по фамилии потом по году рождения.
------------------------------------------------------------------------------
вот данные в текстовом файле:
Веенеев 1999 5 4 5 4 5
Иванов 2000 5 3 3 4 5
Петров 1998 3 3 3 3 3
Сидоров 1999 4 5 4 3 4
-------------------------------------------------------------------------------



Код:
#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;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 03.05.2018 в 17:37.
WeAreDogs вне форума Ответить с цитированием
Старый 03.05.2018, 17:27   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

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

Спасибо, посмеялся от души. Как у слесаря Полесова - мотоцикл был совсем как настоящий, но не работал.
Глубоко вникать неохота, но первое, что бросается в глаза: составной оператор в скобки заключать - Репин будет ?
Код:
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
digitalis вне форума Ответить с цитированием
Старый 03.05.2018, 17:38   #3
WeAreDogs
 
Регистрация: 03.05.2018
Сообщений: 3
По умолчанию

Подскажите, пожалуйста, как мне сравнить фамилию и год? он и выдаёт ошибку что нельзя писать string<int

Последний раз редактировалось WeAreDogs; 03.05.2018 в 19:17.
WeAreDogs вне форума Ответить с цитированием
Старый 03.05.2018, 22:37   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Ну так string можно сравнивать со string : 'Иванов' будет меньше чем 'Петров'. С годами также будет: '2000' будет больше чем '1998' . По крайней мере, в Delphi так.
digitalis вне форума Ответить с цитированием
Старый 03.05.2018, 23:09   #5
WeAreDogs
 
Регистрация: 03.05.2018
Сообщений: 3
По умолчанию Вот программа и файл

Посмотрите пожалуйста, почему не работает вроде даже и ошибок нет, но пишет что нет какого-то файла
Вложения
Тип файла: txt input.txt (93 байт, 139 просмотров)
Тип файла: txt сортировка.txt (1.0 Кб, 150 просмотров)
WeAreDogs вне форума Ответить с цитированием
Старый 07.05.2018, 07:54   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

Ну что ж, повторение - мать её так учения. Once again: Берем мой пост #2 и читаем последнюю строчку до наступления понимания.
Код:
	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;
		       }
А не находит файла, наверно ,потому, что не знает где искать. Надо файл input.txt поместить в папку с программой (это проще) или прописать полный путь к файлу.

Последний раз редактировалось digitalis; 07.05.2018 в 08:02.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] нужна готовая программа amins Помощь студентам 1 15.04.2017 11:37
Не запускается готовая программа Алекссс Общие вопросы Delphi 7 05.06.2013 12:10
Не работает программа.Delphi 7.Добавление.Изменение.Поиск.Отбор. Сортировка. eHRmY Помощь студентам 0 26.12.2010 14:48
Электронное руководство - готовая программа! Web-orion Фриланс 2 23.04.2008 00:45