Премини към съдържанието

Препоръчан отговор


Зравейте! Нужна ми е помощ за следната задача:  Да се състави програма която създава динамичен стек S след което установява N-я от дъното елемент в стойност A като първите N-1 елемента от дъното запазват своите стойности. Мерси предварително :)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Искаш някой да ти я напише най вероятно.  Като ти я  напишат   ще си останеш  на същото ниво знания   от което  не печелиш нищо. Толкова няма да ти е ясно какво пише вътре ,че като те попита даскала ще мигаш на парцали .

Редактирано от AlkatrazBG (преглед на промените)
  • Харесва ми 2

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
#include <iostream>
#include <stack>
using namespace std;

stack <int> stek;

int find_enth_from_bottom(stack <int>& smack, int en)
{
	int i;
	int size;
	size = smack.size();
	if (size < en) return -1;
	for (i = 0; i < size - en; i++)
	{
		smack.pop();
	}
	return smack.top();
}
  
void change_enth_from_bottom(stack <int>& smack, int en, int newvalue)
{
	find_enth_from_bottom(stack <int>& smack, int en);
	smak.pop();
	smack.push(newvalue);
}


int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		stek.push(i);
	}
	cout << find_enth_from_bottom(stek, 5);
	return 0;
}

 

Редактирано от Реджеп Иведик (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Така е при стек ънуайдинга. Пази се една разлика, която е равна на размера заеман от локалните променливи и при ънуайдинга се разрушава стека до тази разлика, като така се освобождава стека от променливите на последната подпрограма.

 

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 14 часа, Реджеп Иведик написа:

#include <iostream>
#include <stack>
using namespace std;

stack <int> stek;

int find_enth_from_bottom(stack <int>& smack, int en)
{
	int i;
	int size;
	size = smack.size();
	if (size < en) return -1;
	for (i = 0; i < size - en; i++)
	{
		smack.pop();
	}
	return smack.top();
}
  
void change_enth_from_bottom(stack <int>& smack, int en, int newvalue)
{
	find_enth_from_bottom(stack <int>& smack, int en);
	smak.pop();
	smack.push(newvalue);
}


int main()
{
	int i;
	for (i = 1; i <= 10; i++)
	{
		stek.push(i);
	}
	cout << find_enth_from_bottom(stek, 5);
	return 0;
}

 

Декларирал си стека в глобалното адресно пространство, а го предаваш като псевдоним на всяка една от функциите, които го обработват. Защо правиш така ?

 

Аз лично предпочитам този подход само и единствено, за да избягвам голям брой аргументи, които може да се появят в дадена функция. И то в повечето случаи, ако евентуално функцията е рекурсивна, ги правя променливите статични в самата нея си, за да може единствено тя да има достъп до променливите.


Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Без да му мисля много, ама сега като ме обвини, тръгнах да търся защитни тези.

Например може да имам не един, а няколко контейнера в глобалното пространство и по време на изпълнението да се решава чий синоним да се даде на функцията.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
преди 6 часа, Реджеп Иведик написа:

Без да му мисля много, ама сега като ме обвини, тръгнах да търся защитни тези.

Например може да имам не един, а няколко контейнера в глобалното пространство и по време на изпълнението да се решава чий синоним да се даде на функцията.

Дори да имаш няколко, те са в глобалното пространство, така че просто ако ти трябва да модифицираш някой от тях, ползваш неговия идентификатор.

Редактирано от programprogram (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове
Току що, programprogram написа:

Дори да имаш няколко, те са в глобалното пространство, така че просто ако ти трябва да модифицираш някой от тях, ползваш неговия идентификатор.

Не става така. Ако не е подаден като параметър не може.

Ако не е подаден като параметър, функцията ще работи само с един, този за който е написана. Но ако искам да мога да я викам и за другите, трябва да се подават като параметри.

Нагарджуна не случайно я е написал Философията на средния път. За всяко нещо си има контексти, в които е вярно, както и такива, в които не е вярно.

Ако не беше така, адвокатите щяха да умрат от глад. А те не умират.

Разбира се, има и контексти, в които и това, което казвам не е вярно. Не съм го измислил аз средния път.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.