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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2023, 12:23   #1
Ifergo
Новичок
Джуниор
 
Регистрация: 27.04.2023
Сообщений: 2
По умолчанию Таблица рекордов с++

В файл записываются результаты игры(имя и очки).Как сделать таблицу рекордов,что бы результаты игр сортировались от большего к меньшему?Заранее спасибо за помощь)Понимаю что скорее всего через map,но не знаю как(
Ifergo вне форума Ответить с цитированием
Старый 05.05.2023, 12:34   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Если это файл рекордов, тогда все записи в нем должны быть упорядочены. Для добавления новой достаточно пройти по списку записей, пока очки добавляемой записи не станут больше текущей и добавить новую запись в эту позицию. А последнюю запись в этом случае можно удалить. Тогда после добавления по этим правилам новая запись будет сразу попадать на нужную позицию. А если новая запись попадёт на последнюю позицию, тогда она не будет добавлена, а сразу удалена.
macomics вне форума Ответить с цитированием
Старый 05.05.2023, 15:05   #3
jillitil
Форумчанин
 
Аватар для jillitil
 
Регистрация: 17.10.2018
Сообщений: 184
Сообщение

Сначала разберись как надо обрабатывать данные в памяти, а потом в файл пиши.
Код:
#include <string.h>

struct
	THighScores
	{
		int	Score;
		char	Name[8];
	}
	Table[10] = {
		 999, "Misha",
		 900, "Natasha",
		 800, "Roma",
		 700, "Kolja",
		 600, "Jana",
		 500, "Galja",
		 400, "Marina",
		 300, "Sergej",
		 200, "Vadim",
		 100, "Shurik",
		};

void AddScores(int NewScore, char NewName[] )
	{
		int i;
		if (NewScore < Table[9].Score) return;
		for (i = 9; i > 0; i--)
			if (NewScore > Table[i-1].Score)
				Table[i] = Table[i-1];
			else
				break;
		Table[i].Score = NewScore;
		strncpy(Table[i].Name, NewName, 7);
	}

int main(int argc, char* argv[])
	{
		AddScores(550, "Julia");
		AddScores(550, "Vera");
		AddScores(050, "Nadja");
		AddScores(550, "Konstantin");
		AddScores(1050, "Egor");
		return 0;
	}

Последний раз редактировалось jillitil; 05.05.2023 в 15:52. Причина: Лишние строки удалены.
jillitil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблица рекордов. Kef1r БД в Delphi 6 15.05.2016 16:09
Таблица рекордов Zaraaa Помощь студентам 0 24.04.2014 22:39
таблица рекордов в тетрисе! Юлия11 C++ Builder 10 12.06.2013 10:34
Таблица рекордов Ember_ Помощь студентам 4 03.06.2013 15:46
Таблица рекордов glebast Помощь студентам 0 10.06.2012 22:39