Професионална програма
Loading...
+ Нов въпрос
marsp avatar marsp 19 Точки

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
					}
				}
			}
		}
	}

П.С. Надявам се няма да е проблем, че съм пуснал малко от кода на тази задача.
Поздрави!

0
C++ Advanced
kolioi avatar kolioi 615 Точки

Най-вероятно не влизаш в if-а. Сложи breakpoint на двата реда където нулираш i и пусни дебъгера да видиш какво става.

0
marsp avatar marsp 19 Точки

Всъщност влиза, за това съм и малко объркан. Минава и през самата променлива, но поради някаква причина не приема стойността, която и се задава. :/

0
08/09/2018 16:48:29
marsp avatar marsp 19 Точки

Update: След кратка игра с дебъгъра, установих, че "i = -1" ми занули успешно. Нямам обаче никаква представа защо. Ако някой може да ми светне лампичката, ще съм му задължен, хаха!

Поздрави!

0
marsp avatar marsp 19 Точки

Update v2: Явно просто съм мега зле... тотално забравих, че все пак съм в for цикъл, който накрая инкрементира...

Joke's on me. :) Надявам се поне, за четящите да бъде забавно! :D

Поздрави!

0
kolioi avatar kolioi 615 Точки

Стават грешки. Един миг невнимание и после цял ден дебъгване wink

Доколкото разбирам от кода, трябва ти сортиран списък от обекти от клас/структура Company. Можеш просто да ги събереш в един vector и след това да го сортираш. Или да използваш set. Тъй като не знам какво е условието на задачата, не мога да кажа кой начин е по-подходящ. За сортирането може да погледнеш примера тук.

0
marsp avatar marsp 19 Точки

Трябваше да е задължително vector по условие. Мислех първоначално да си поиграя да сложа кондиция с std::sort, но понеже трябваше кондицията да е един от членовете на класа и това ми се стори малко играчка, понеже не съм го правил така, реших да си разпиша прост сортиращ алгоритъм. Но пък ще разгледам и sort варианта как би се реализирал. :)

0