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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

Моля за помощ задача с рекурсия

Featured Replies

Това е една от петте задачи, които ще имам през семестъра. Ще съм ви благодарен ако можете да ми помогнете.
Зад. Да се състави програма, която да определя минималния брой монети за връщане на ресто. Да се предвиди въвеждане на стойностите на различни монети (напр. 1, 2, 5, 10, 20 и 50). Да се реализира вариант с рекурсия.

преди 53 минути, traktor4o написа:

Не мога да разбера самото условие и какво се иска от мен да направя

Да съставиш програма.

преди 4 часа, traktor4o написа:

Това е една от петте задачи, които ще имам през семестъра. Ще съм ви благодарен ако можете да ми помогнете.
Зад. Да се състави програма, която да определя минималния брой монети за връщане на ресто. Да се предвиди въвеждане на стойностите на различни монети (напр. 1, 2, 5, 10, 20 и 50). Да се реализира вариант с рекурсия.

Делиш на 50 ст., цялото число са броя на 50 ст. Остатъка делиш на 20 и т.н. докато няма да има остатък.

#include <iostream>

using namespace std;

int M[]={50,20,10,5,2,1};
int br=0;

void print(int s)
{
     if (br++) cout<<" + ";
     cout<<s;
}
     
void resto(int r, int ix)
{
     while (r>=M[ix])
     {
         print(M[ix]);
         r-=M[ix];
     }
     if (r==0) {cout<<endl; return ;}
     resto(r, ix+1);
}

int main()
{
    int r;
    
    cout<<"Resto = ";
    cin>>r;
    if (r>0) resto(r,0);
    if (br==1) cout<<"1 moneta\n";
    else cout<<br<<" moneti\n";
}

 

преди 11 часа, ined написа:

#include <iostream>

using namespace std;

int M[]={50,20,10,5,2,1};
int br=0;

void print(int s)
{
     if (br++) cout<<" + ";
     cout<<s;
}
     
void resto(int r, int ix)
{
     while (r>=M[ix])
     {
         print(M[ix]);
         r-=M[ix];
     }
     if (r==0) {cout<<endl; return ;}
     resto(r, ix+1);
}

int main()
{
    int r;
    
    cout<<"Resto = ";
    cin>>r;
    if (r>0) resto(r,0);
    if (br==1) cout<<"1 moneta\n";
    else cout<<br<<" moneti\n";
}

 

В дебелите книги пише, че гриди не е коректно.

Например ако масива е с елементи {1, 2, 4, 5}, а рестото е 8.

Spoiler

Бая масив ще да се генерира с всички комбинации от бройки на 5те елемента, за да се покрият всички възможности)

 

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

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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