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

2018-11-10 12:50
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.

edytowany 1x, ostatnio: furious programming, 2018-11-10 14:33
Tytułowanie wątków, Tagowanie wątków, Formatowanie treści – zapoznaj się z tymi artykułami. Kolejne niesformatowane wątki czy źle zatytułowane mogą wylądować w koszu. - furious programming 2018-11-10 14:34

Pozostało 580 znaków

2018-11-10 15:09
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ć.

edytowany 1x, ostatnio: Progress, 2018-11-10 15:10

Pozostało 580 znaków

2018-11-10 16:53
0

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

Pozostało 580 znaków

2018-11-11 09:55
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?

Pozostało 580 znaków

2018-11-11 12:34
0

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

Pozostało 580 znaków

2018-11-11 12:55
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.

Pozostało 580 znaków

2018-11-11 15:18
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?

edytowany 1x, ostatnio: furious programming, 2018-11-11 16:14
Wstawiaj kod w znaczniki kolorujące składnię – ```cpp przed kodem, a po kodzie samo ``` - furious programming 2018-11-11 16:15

Pozostało 580 znaków

2018-11-11 18:15
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.

edytowany 1x, ostatnio: Althorion, 2018-11-11 18:16

Pozostało 580 znaków

2018-11-11 23:41
0

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

Rzeczywiście, nie jest to takie proste, jak się nad tym zastanowić. Ale na tym polegają algorytmy, żeby wszystko zrozumieć i zapisać, więc też chętnie się dowiem rozwiązania. :) - Silv 2018-11-12 00:05
@Silv: męczyli mnie tym na studiach — efekt co prawda tylko taki, że pamiętam że się dało i jakbym miał odbezpieczony pistolet przystawiony do głowy to bym pewnie wymyślił rekurencyjnie, ale nie pamiętałem jak — a już zwłaszcza iteracyjnie. Na szczęście ktoś w Internecie pamiętał i wyszukiwarka znalazła. - Althorion 2018-11-12 10:26

Pozostało 580 znaków

2018-11-12 10:25
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/que[...]s-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.

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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