Task 3 Order - int variable derping
Здравейте!
Уха, честта за първия пост за този курс се пада на мен, хаха! Някой по-умен от мен може ли да ме светне, защо аджеба в кода ми int променливата ми, поради някаква непонятна причина за мен, не желае да приеме стойността, която и задавам? Ето за по-ясно:
void insert(const Company* c)
{
if (c->getName() != "\n" && c->getName() != "" && c->getName() != " ")
{
(*companies).push_back(c);
for (int i = 0; i < (*companies).size() - 1; i++)
{
if ((*companies)[i]->getId() > (*companies)[i + 1]->getId()) //&& (*companies)[i]->getId() != (*companies)[i + 1]->getId())
{
auto oldPosVal = (*companies)[i];
(*companies)[i] = (*companies)[i + 1];
(*companies)[i + 1] = oldPosVal;
i = 0; // doesn't get value assigned
}
else if ((*companies)[i]->getId() == (*companies)[i + 1]->getId())
{
if ((*companies)[i]->getName() > (*companies)[i + 1]->getName())
{
auto oldPosVal = (*companies)[i];
(*companies)[i] = (*companies)[i + 1];
(*companies)[i + 1] = oldPosVal;
i = 0; // doesn't get value assigned
}
}
}
}
}
П.С. Надявам се няма да е проблем, че съм пуснал малко от кода на тази задача.
Поздрави!
Стават грешки. Един миг невнимание и после цял ден дебъгване
Доколкото разбирам от кода, трябва ти сортиран списък от обекти от клас/структура Company. Можеш просто да ги събереш в един vector и след това да го сортираш. Или да използваш set. Тъй като не знам какво е условието на задачата, не мога да кажа кой начин е по-подходящ. За сортирането може да погледнеш примера тук.
Трябваше да е задължително vector по условие. Мислех първоначално да си поиграя да сложа кондиция с std::sort, но понеже трябваше кондицията да е един от членовете на класа и това ми се стори малко играчка, понеже не съм го правил така, реших да си разпиша прост сортиращ алгоритъм. Но пък ще разгледам и sort варианта как би се реализирал. :)