Sklejanie dwóch liczb

0

Witam
Mam zapisane w tablicy 6 licz, chce z nich stworzyć wszystkie możliwe pary. Robię to w taki spsób

    printf("tworze pary \n");
    for(i=0;i<6;i++)
    {
        for(j=0;j<6;j++)
        {
            if(i==0) break;
            if(i!=j)
            {
                printf("%d%d\n",tab[i],tab[j]);
            }
        }
    }

W jaki sposób zapisaną parę traktować jak liczbę (stworzyć z niej liczbe) ?

0

10*i + j

0

To niestety nie dział bo jak mam np liczby 7,15,19 to chce z nich otrzymać pary 715,719,157,1519

0

for(int i = 0; i < ilosc_cyfr_pierwszej_liczby; ++i)
sklejona_liczba += 10^suma_cyfr-i-1*cyfry[i];

0

Wygląda to dość skomplikowanie, mam problem z wdrożeniem tego kodo do mojego programu

0

Podam jeszcze raz swój cały kod jak możesz pokaż gdzie tu to wsadzić

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *f;
    int odczytane,i,j,k=0,licznik=0;
    int tab[6], *t;
    t=(int*)malloc(licznik*sizeof(int));
    f=fopen("duzy_lotek.txt","r");
    while(!(EOF==fscanf(f,"%d",&odczytane)))
    {
        tab[k]=odczytane;
        k++;
        if(k==6) break;
    }
    for(i=0;i<6;i++)
    {
        printf("%d\n",tab[i]);
    }
    printf("tworze pary \n");
    for(i=0;i<6;i++)
    {
        for(j=0;j<6;j++)
        {
            if(i!=j)
            {
               printf("%d%d\n",tab[i],tab[j]);

            }
        }
    }

    fclose(f);
    return 0;
0

Chcę połączyć je w pary aby później porównać czy w kolejnym losowaniu wystąpiły takie(tylko losowań będzie dość dużo, i każde z każdym ma być sprawdzone)

0

Zakładając że to ma działać dla dowolnie dużych liczb, najprościej będzie korzystając z Konwersje int na string i string na int skonwertować je na stringi, potem te stringi do siebie "dodać" i na koniec wynik z powrotem na int (albo i do wyświetlenia jeśli nie robi ci to różnicy).

0

Bezpośrednia odpowiedź na pytanie:

stringstream ss(ios::in|ios::out);
ss<<a<<b;
ss>c;

Ale to nie tędy droga (zakładając że liczby są w zakresie 1..N ):

  1. Ilość możliwych uporządkowanych różnych dwójek wynosi N*(N-1)/2 - tyle elementów trzeba mieć w tablice liczników
  2. W ww tablice para A,B (A<B - jeżeli tak nie jest trzeba zamienić je miejscami) ma indeks: (1+2N-A)A/2+B-N
    3-jek - ilość - N
    (N-1)
    (N-2)/(23)
    4-rek - ilość - N
    (N-1)(N-2)(N-3)/(234)
    Numery indeksów dla 3-jek i 4-rek trochę bardziej kobylaste ale jak trochę nad tym posiedzisz to może dasz rady wyprowadzić.

Alternatywa (ale obrzydliwie bezsensowna):
size_t Liczniki2[N+1][N+1];
size_t Liczniki3[N+1][N+1][N+1];
size_t Liczniki4[N+1][N+1][N+1][N+1];

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