Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

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

 

Помощ за задача по С++ със стек

Featured Replies

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

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

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

#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 написа:

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

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

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

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

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

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

Архивирана тема

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

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

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

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.