Program generujący liczby – pomoc w rozwiązaniu zadania

0

Nie wiem jak się za to w ogóle zabrać. Proszę o pomoc.

Napisz program, który wczytuje dwie liczby naturalne i generuje z nich trzecią liczbą w ten sposób, że:

  • w generowanej liczbie muszą wystąpić wszystkie cyfry występujące we wczytywanych liczbach;
  • Wzajemna kolejność cyfr każdej z wczytanej liczby musi być zachowana;

Dla przykładu, gdy na wejściu mamy liczby: 42, 153, to program powinien wypisać liczby:

42153
41253
41523
41532

itd.

0
kaktus123 napisał(a):

generuje z nich trzecią liczbą
gdy na wejściu mamy liczby: 42, 153, to program powinien wypisać liczby:

Czyli w końcu ten program ma generować jedną liczbę czy wszystkie możliwe kombinacje?

Zacznij on zrobienia aplikacji konsolowej, która wczytuje dwie liczby. A co dalej to zależy jak ten program ma ostatecznie działać.

0

Ma generować wszystkie kombinacje danych dwóch liczb pamiętając o tych dwóch warunkach

0

W którym miejscu się zacinasz? Nie wiesz, jak wczytać liczby, podzielić liczby na cyfry, wygenerować kombinacje tych cyfr, wypisać te kombinacje na ekran?

0

Ogólnie nie wiem jak się za to w ogóle zabrać, a wyznaczenie tych liczb to dla mnie już kosmos

2

No to krok po kroku. Nie martw się, poprowadzimy Cię za rączkę jeśli będzie trzeba, ale inicjatywę musisz wykazać sam, bo o ile możemy Ci wytłumaczyć, to nie możemy za Ciebie zrozumieć.

Więc jeszcze raz:

  1. Wczytywanie liczb.
  2. Podział na cyfry.
  3. Generowanie zadanych kombinacji tych cyfr.
  4. Wypisywanie wyników.

Umiesz napisać program, który sobie poradzi tylko z punktem pierwszym? Pokaż. Jeśli umiałbyś drugi, to też pokaż. Potem będę tłumaczyć dalej, jeśli będzie taka potrzeba.

0
#include <iostream>
using namespace std;

int main(){
    int a, b;
    cin >> a >> b;
}

Podział na cyfry w sensie Ci chodzi jak? Po prostu wprowadzić 2 tabele VCL i do każdej komórki roibć operacje modulo z tej liczby?

0

To jest jedna z opcji, tak. Tutaj jednak, w mojej opinii, lepiej będzie zamiana liczby na string: https://en.cppreference.com/w/cpp/string/basic_string/to_string
Wówczas masz go od razu pociętego na cyfry — w zerowej komórce będzie ostatnia cyfra, w pierwszej przedostatnia itd.

0

No dobra i jak dalej generować te kombinacje bo to dla magia jakaś

0

Jak się przyjrzysz temu problemowi, to on się sprowadza do tego, jak wybrać dokładnie n elementów z k elementów, gdzie n to długość pierwszej liczby, a k to suma długości obu liczb. Wtedy na tych wybranych miejscach wypisujesz kolejno cyfry pierwszej liczby, a na pozostałych — cyfry drugiej liczby. Przykładowo, jak mamy te liczby z zadania: 42 i 153, to n to dwa, a k to pięć.

Przyjmując oznaczenie takie, że 1 oznacza pole na cyfrę pierwszej liczby, a 0 oznacza pole na cyfrę drugiej liczby, generujemy sobie k cyfrowe liczby binarne z n jedynkami, np. tak jak tutaj: https://stackoverflow.com/questions/1851134/generate-all-binary-strings-of-length-n-with-k-bits-set

A jak już to mamy, to pozostaje punkt czwarty, czyli przypisywanie kolejnych cyfr na kolejne pola (pokazałem krok po kroku, tzn. zapis miejsc, powstawiane cyfry pierwszej liczby a drugie zapisane jako _, powstawiane wszystko):

11000 → 42___ → 42153
10100 → 4_2__ → 41253
10010 → 4__2_ → 41523
itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1