Loading...
polinausheva123 avatar polinausheva123 2 Точки

C++ Задача

Да се състави компютърна програма за обслужване на национално състезание по
лека атлетика за мъже и жени, в което участват до 100 състезатели от различни отбори.
Всички състезатели са родени преди 2000 г. За целта:

  1. За всеки участник да се въведе следната информация:
    • ЕГН (десетцифрен единен граждански номер);
    • име (знаков низ до 40 знака, състоящ се от две или повече подимена, разделени с точно един интервал);
    • име на отбор (знаков низ до 20 знака);
    • дисциплина (знаков низ до 25 знака);
    • място в класирането по съответната дисциплина (цяло число).
  2. Да се изведе списък на всички състезатели, съдържащ последно име на участник, име на отбор, дисциплина и място в класирането. Списъкът трябва да бъде подреден по име на отбор (в азбучен ред), а за един и същи отбор по място в класирането(възходящо). Полетата да бъдат разделени със запетая и един интервал. Например:
    Николов, Спартак-Плевен, хвърляне на копие, 1

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Здравейте, това е условието, ако някой може да ми го реши, за да видя как става. Мога да направя само това до този момент.

https://pastebin.com/Zh1xa1sr

0
Programming Basics
kolioi avatar kolioi 641 Точки

В main() правиш един цикъл, в който въвеждаш данните за всеки атлет и ги добавяш в някакъв контейнер, след това сортираш и извеждаш на екрана. Ако използваш C++ може да имаш вектор, или set още по-добре, защото в set се сортират още при въвеждането. Ако искаш на C, става и с масив, след това сортираш с qsort и извеждаш. Функцията за сравнение при сортирането е нещо такова

bool operator () (const Athlete& lhs, const Athlete& rhs) const
{
	int cmp = strcmp(lhs.team, rhs.team);
	if (!cmp)
		return lhs.place < rhs.place;
	return cmp < 0;
}

и я слагаш в структурата struct Athlete. За C  тази функция е малко по-различна.

1
21/06/2018 10:17:07
kolioi avatar kolioi 641 Точки

Така изглежда функцията main(). Използването на set  с функция за сортиране дефинирана от потребителя е малко tricky. Няма ограничение за броя на въведените атлети, но може да се добави.

int main()
{
	set<Athlete, Athlete::Comparator> athlete_list;

	do
	{
		Athlete athlete;
		cin >> athlete;
		athlete_list.insert(athlete);
		cout << "Press Enter for next athlete or Ctrl+z, Enter to finish ";
		cin.ignore();
	} while (cin.get() != EOF);

	for (const auto& athlete : athlete_list)
		cout << athlete;

	return 0;
}

Целия код https://pastebin.com/6ktg1byc

П.П. И една "олекотена" версия, в която се използва qsort() https://pastebin.com/ZxFbmm7M

0
22/06/2018 15:42:30
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.