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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

C++ задача спешно хелп

Featured Replies

Трябва да добавя една функция накой може ли да ми помогне 

Задачата ми е

 

Задача 1. Да се състави функция за търсене на елемент с ключова стойност X в зададен дек и замяната му със стойност Y, ако Х се съдържа в структурата. Стойностите за X и Y се задават от потребителя.

 

 #include <iostream>
using namespace std;
void push_l(int n); //prototype
void push_r(int n); //prototype
int pop_l(int& n); //prototype
int pop_r(int& n); //prototype
struct elem   //структура на дек
{
    int key;         //съдържа стойността на елемента
    elem* next;     //сочи към следващия елемент
}
*leftt = NULL, * rightt = NULL;  //left сочи към краиния ляв елемент,а right сочи към крайния десен
void push_l(int n)   //добавяне на елемент със стойност n
{
    elem* p;                  //създаване на указател p от тип elem
    p = leftt;               //p приема стойността на крайния ляв елемент
    leftt = new elem;       //създава нов елемент сочен от left
    leftt->key = n;        //установяване на  n за стойност на крайния ляв елемент 
    leftt->next = p;      //следващия елемент left приема стойността на p
    if (rightt == NULL)  //ако няма краен десен елемент, то left  става такъв
    { //добавяне в празен дек
        rightt = leftt;
    }
}
void push_r(int n)  //добавяне отдясно на елемент със стойност  n
{
    elem* p;       //създаване на указател  p от тип elem
    p = rightt;    //p приема стойността на краиния десен елемент
    rightt = new elem;  //създаване на нов елемент сочен от right
    rightt->key = n;   //установяване на n за стойнот на крайния десен елемент
    rightt->next = NULL;   //следващия елемент right приема NULL
    if (leftt == NULL) //добавяне на първи елемент
        leftt = rightt;  //ако няма краен ляв елемент 
    else                  //десен, в противен случей
        p->next = rightt;  // следващият елемент райт приема стойността на крайния десен елемент
}
int pop_l(int& n)  //извличане на елемент отляво
{
    elem* p;  //създаване на указател p от тип elem
    if (leftt)  //проверка за наличие на краен ляв елемент 
    {
        n = leftt->key;  //n приема стойността на крайния ляв елемент
        p = leftt;       //p  сочи крайния елемент
        leftt = leftt->next;   //left сочи следващият негов елемент
        if (leftt == NULL)  //ако няма краен ляв елемент
            rightt = NULL;   //указателят right се занулява
        delete p;  //изтриване на указателя  p
        return 1;
    } //if(leftt)
    else
        return 0;
}
int pop_r(int& n)   //извличане на елемент отдясно
{
    elem* p;   //създаване на указател p от тип elem
    if (rightt)  //проверка за наличие на краен десен елемент
    {
        n = rightt->key;   //n приема стойността на крайния десен елемент
        if (leftt == rightt)  //ако крайния десен елемент=крайния ляв
        { delete rightt;    //изтриване на крайния десен
        leftt = rightt = NULL;   //нулиране на указателите
        } 
        else //leftt==rightt
        {
            p = leftt;    //p приема стойността на крайния ляв елемент
            while (p->next != rightt)  //докато следващия p елемент 
                 //е различен от крайния десен
                p = p->next;   //p преминава на следващия елемент
            p->next = NULL;  //указателят за следващият на  p се нулира
            delete rightt;    //изтриване на крайния десен елемент
            rightt = p;      //крайният десен приема стойността на p
        }
        return 1;
    } //rigth
    else
        return 0;
}
int main()
{
    int ch;
    do
    {
        int num;
        cout << "\n Menu:\n";
        cout << "1 - Input leftt\n";
        cout << "2 - Input rightt\n";
        cout << "3 - Output leftt\n";
        cout << "4 - Output rightt\n";
        cout << "5 - Exit\n";
        cout << "Your choice: ";
        cin >> ch;
        switch (ch)
        {
        case (1):
        case (2):
            cout << "\nInput number: ";
            cin >> num;
            if (ch == 1)
                push_l(num);
            else
                push_r(num);
            break;
        case (3):
        {
            if (leftt == NULL)
                cout << " The Deck is empty!";
            while (pop_l(num))
                cout << num << "\t";
            break;
        } //case(3)
        case (4):
        {
            if (rightt == NULL)
                cout << " The Deck is empty!";
            while (pop_r(num))
                cout << num << "\t";
        } //case(4)
        } //switch
    } while (ch != 5);
    return 0;
} //main()

int changekey(int x, int y)
{
    elem *p=leftt;
    
    while (p)
    {
        if (p->key == x)
        {
             p->key = y;
             return 1;
        }
        p = p->next;
    }
    return 0;
}

  • Автор
преди 23 минути, ined написа:

int changekey(int x, int y)
{
    elem *p=leftt;
    
    while (p)
    {
        if (p->key == x)
        {
             p->key = y;
             return 1;
        }
        p = p->next;
    }
    return 0;
}

Човек много ти благодаря!!

Желая ти здраве късмет всичко най-добро лека вечер :))

преди 1 час, MAZssa написа:

Човек много ти благодаря!!

Желая ти здраве късмет всичко най-добро лека вечер :))

Целият му хладилник,е пълен с "благодаря".Вземи едно "черно".

преди 22 минути, The Rage написа:

Целият му хладилник,е пълен с "благодаря".Вземи едно "черно".

Здравето е по-важно от някакво "черно"

преди 5 минути, ined написа:

Здравето е по-важно от някакво "черно"

Жив и здрав бро.Далеч съм от мисълта,да се подигравам.

Просто виждам,че само ти помагаш за "задачки".

Добавете отговор

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

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

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

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

Дарение

  • Подкрепи съществуването на форума - направи дарение
    25%
    Дарени 252.69 EUR от нужните 1,000.00 EUR

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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