Kilka intów sklejone w jeden

0

Witam,
Załóżmy że mam trzy inty:

a=2, b=3, c=4

. I chcę je "skleić" w jeden int d=234

 jak mogę tego dokonać?
2

Użyj własności pozycyjności systemu liczbowego. Pomnóż c razy 100, b razy 10 i dodaj wszystko razem.

0

Dzięki za odpowiedź, jednak taka metoda będzie problematyczna gdy (oczywiście ja tak mam zrobić) liczba intów do sklejania nie będzie wiadoma (n) może ona okazać się bardzo duża.
@Edit: zakładając że n = 100 wtedy trzeba będzie uzyskać liczbę 10^100. Czy istnieje jakiś inny sposób?

0

Chcesz uzyskać liczbę czy napis?

0

Chodzi właśnie tu o liczbę, konkatenacja stringów nie będzie się sprawdzać w tym przypadku niestety.

1

W typie int nie przechowasz liczby stucyfrowej.

0

To i tak zbyt wielu tych cyfr nie złączysz jeżeli chcesz się zmieścić w typach wbudowanych. Jeżeli nie wiesz ile tych cyfr będzie to w zwykłej pętli możesz podnosić 10 do potęgi i.

0

To może sklej wszystkie liczby do stringa i później z powrotem do liczbowego ale nie wiem czy to najszczęśliwsza metoda albo wczytuj te liczby jako stringi łącz i potem konwersja. Ale i tak masz małe pole manewru:
int -2,147,483,648 to 2,147,483,647
uint 0 to 4,294,967,295

0

Dzięki za pomoc, problem polega na tym że mam do napisania algorytm który będzie generował liczby w porządku leksykograficznym np. dla n=5 i k=3 będą to 111,112,113,114,115,121,122,...,555 i nie wiem jak to rozwiązać, może jakieś sugestie.
@Edit: może dla ułatwienia załóżmy że liczba może być w postaci tablicy np (1,1,1) tab[0]=1, tab[1]=1, tab[2]=1 itd.

0
#include <vector>
#include <iostream>
using namespace std;

void gen(unsigned n,unsigned k,const char alphabet[])
  {
   vector<unsigned> tb(k);
   for(unsigned i=0;i<k;)
     {
      for(i=0;i<k;++i) cout<<alphabet[tb[i]];
      cout<<endl;
      --i;
      while((i<k)&&(++tb[i]>=n)) tb[i--]=0;
     }
  }
  
int main()
  {
   gen(5,3,"12345");
   return 0;
  }

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