Мне нужно отсоритровать структуру состающую из NAME SCORE по порядку, начинаю от того у кого самое большое количество очков, и заканчивая тем у кого их меньше всего. Можете мне пример кода? А то я уже сума сошел =( вроде логика правильная а получается дичь.
struct player list[]
есть list[i].name
и есть list[i].score
структура выглядит примерно так
aanager 1000
banager 900
canager 700
danager 500
eanager 600
fanager 300
ganager 100
hanager 200
inager 400
janager 800
нужно отсортировать от самого большого количества очков к самому минимальному
мой код выглядит так, но получается дичь...
for(i = 0 ; i < line - 1 ; i++) {
for(int j = 0 ; j < line - i -1 ; j++) {
char nm[30];
if(list[j].score > list[j+1].score){
int sc = list[i].score;
strcpy(nm, list[i].name);
list[j].score = list[j+1].score;
strcpy(list[j].name, list[j+1].name);
list[j+1].score = sc;
strcpy(list[j+1].name, nm);
}else{
list[j].score = list[j].score;
}
// printf("%s %d\n", list[i].name, list[i].score);
}
printf("%d %s\n", list[i].score, list[i].name);
}
C/C++
Соритировка структуры в СИ
Да тут вроде всё просто. Пример с динамическим массивом структур, вводимым с экрана, и его последующей сортировкой пузырьком по убыванию компоненты score:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
int i, j, k, n;
string s;
struct player { string name; int score; };
cout << "n: ";
cin >> n;
player *list = new player [n];
for (i = 0; i < n; i++)
cin >> list[i].name >> list[i].score;
for (i = 1; i < n; i++) for (j = n - 1; j >= i; j--)
if (list[j - 1].score < list[j].score)
{
s = list[j - 1].name;
k = list[j - 1].score;
list[j - 1].name = list[j].name;
list[j - 1].score = list[j].score;
list[j].name = s;
list[j].score = k;
}
cout << endl;
for (i = 0; i < n; i++)
cout << setw(10) << list[i].name
<< setw(10) << list[i].score << endl;
}
На чистом Си несколько иначе, но это не принципиально.

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
int i, j, k, n;
string s;
struct player { string name; int score; };
cout << "n: ";
cin >> n;
player *list = new player [n];
for (i = 0; i < n; i++)
cin >> list[i].name >> list[i].score;
for (i = 1; i < n; i++) for (j = n - 1; j >= i; j--)
if (list[j - 1].score < list[j].score)
{
s = list[j - 1].name;
k = list[j - 1].score;
list[j - 1].name = list[j].name;
list[j - 1].score = list[j].score;
list[j].name = s;
list[j].score = k;
}
cout << endl;
for (i = 0; i < n; i++)
cout << setw(10) << list[i].name
<< setw(10) << list[i].score << endl;
}
На чистом Си несколько иначе, но это не принципиально.

Iliyas... Zhalkozhaev...
можешь предоставить код на сишке чистой?
Iliyas... Zhalkozhaev...
понял, просто не знаю как заменить >> и тд в обычной сишке
Танк, послушайте хороший совет на будущее. Не надо сортировать структуры. Надо сортировать указатели на структуры. Если тебе нужен ТОП по какому-то полю структуры - делаешь массив указателей и сортируешь их! Да, в вашем примере это не играет большой роли, но как только у вас будет больше десяти элементов с данными, разница в производительности будет просто катастрофической.
И никогда не используй пузырьковую сортировку. Это вообще днище.
И никогда не используй пузырьковую сортировку. Это вообще днище.
Похожие вопросы
- Помогите решить задачу на структуры в Си.
- Создать файл ABONENT.dat, содержащий записи следующей структуры: ФИО абонента; его номер телефона. на языке си++
- Работа со структурами. Написать программу для СИ
- Язык Си. Тема: структуры данных.
- Помогите плиз написать программу на Си Массив структур
- Структуры и строки в си
- Создать структуры в с++
- [C++] Помогите написать задачу на структуры!
- Программа на c++ не работает. Написать структуру и прочее. Подскажите, пожалуйста, что я делаю не так.
- Вложенные структуры. С++