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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2011, 18:27   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию Файл и структура

Всем добрый день.
Такая проблема, нужно сделать в игре рейтинг игроков, тоисть после смерти или прохождения уровня нужно запрашивать вода имени персонажа, из структуры character сливать поле score(набранные очки) ну и естественно записывать позицию в рейтинге.Немогу понять лишь одного, как сделать так чтобы если к примеру записан один игрок со значением очков 300, и появился новый игрок со значением 350 и к примеру 200, как сдвинуть рейтинг, чтоб тот у кого больше очков был на первом месте?
revaldo666 вне форума Ответить с цитированием
Старый 18.05.2011, 18:44   #2
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

всё просто.... создай вектор где будут хранитса данные о твоих игроках- рекордсменах и при добавлении нового рекордсменна просто проверяй весь список и выбири место куда он должен будет вставитса, если его счёт будет меньшим за счёт последнего игрока в рейтинге (когда тот уже бедет заполнен) то попросту не добавляй его в свой вектор-рейтинг
mansp вне форума Ответить с цитированием
Старый 18.05.2011, 18:53   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

А можешь подсказать как веткор сделать...ато мы их ещё не учили.
revaldo666 вне форума Ответить с цитированием
Старый 18.05.2011, 21:30   #4
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

может ктото подсказать как сделать вышесказанное хоть как нибудь)))

вот сама структура которая имеется

Код:
struct character
	{
		char * name;
		int smile;
		int str;
		int points;
		int hold;
		int hp;
		int score;
		int level;
		int timer;

	};
revaldo666 вне форума Ответить с цитированием
Старый 18.05.2011, 22:32   #5
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

как в сортировке вставками
ololo-schoolboy вне форума Ответить с цитированием
Старый 18.05.2011, 23:41   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Цитата:
создай вектор
Ну тогда уж сразу множество))) Оно в принципе всегда отсортировано (правда, с учетом возможности одинаковых результатов - multiset). Хотя там доступ
Цитата:
А можешь подсказать как веткор сделать
Речь идет о стандартных контейнерах std::vector, std::set, std::multiset. Впрочем, это вряд ли то, что вам нужно, но если интересно, то алгоритм прост. Добавляете в вектор новый элемент, сортируете, выкидываете последний. Со множеством - еще проще: добавляете, удаляете последний:
Код:
const int N = 10;
std::vector<int> vr(N);
std::multiset<int> msr(N);
//...
vr.push_back(NewResult);
std::sort(vr.begin(), vr.end());
vr.pop_back();
//...
msr.push_back(NewResult);
msr.pop_back();
Вроде так. (для множеств ведь вроде есть операции с концами?)
Но лучше сделать что-то вроде этого:
Код:
const int N = 10;
int results[N];
//...
int pos = N;
while (NewResult > results[--pos] && pos);   //Отредактировал сообщение! Постфиксный -> префиксный.
pos++;
if (pos != N)
 {
 for (int i = pos + 1; i < N; i++)
  results[i] = results[i - 1];
 results[pos] = NewResult;
 }
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же

Последний раз редактировалось Гром; 18.05.2011 в 23:49.
Гром вне форума Ответить с цитированием
Старый 18.05.2011, 23:43   #7
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

спасибо большое.

А как в него засунуть данные структуры?
просто как говорил выше...с векторами дела вообще не имел
revaldo666 вне форума Ответить с цитированием
Старый 18.05.2011, 23:51   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В массиве вместо int храним указатели на структуру, в if заменяем results[--pos] на (results[--pos])->score. Ну и, естественно, вместо простого присваивания results[pos] нужно будет сначала создать новый объект структуры, а то, что было по указателю results[N - 1] - удалить.
Дальше должны справиться сами.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 18.05.2011, 23:56   #9
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

спасибо огромное...вродебы как понял...буду пробовать...
revaldo666 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++. Структура и вывод в файл. student71 Помощь студентам 0 04.05.2011 11:56
Структура+файл revanatar Общие вопросы C/C++ 6 23.01.2011 12:22
Файл,структура (TASM) natt23 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 07.12.2010 21:22
файл и структура muxazila Общие вопросы C/C++ 0 08.06.2010 16:42
Текстовый файл - Структура (записи) felmor Паскаль, Turbo Pascal, PascalABC.NET 0 18.05.2009 22:36