[C] iloczyn kartezjański 2 tablic

realwasz

[C] iloczyn kartezjański 2 tablic

Post autor: realwasz »

Witam
Mam problem z takim zadaniem, aby utworzyć iloczyn kartezjański dwóch tablic o takich samych rozmiarach, np dla \(\displaystyle{ A= \left\{ 1,2 \right\}}\) oraz \(\displaystyle{ B= \left\{ 2,3 \right\}}\) wynikiem powinno być: \(\displaystyle{ A \times B= \left\{ \left( 1,2 \right) , \left( 1,3 \right) , \left( 2,2 \right) , \left( 2,3 \right) \right\}}\)

Mój problem polega na tym że nie mam pojęcia jak do tablicy przekazać taki twór

Kod: Zaznacz cały

tab[k]='(a[i],b[j])'
i jak później go wywołać?

Oto mój kod:

Kod: Zaznacz cały

#include <stdio.h>
#include <stdlib.h>
int k;

char *iloczynKartezjanski(int a[], int b[], int n)
{
    char *tab = (char *)malloc(n*n*sizeof(char));
    int i, j;
    k=-1;
    
    for(i=0; i<n; i++)
        for(j=0; j<n; j++)
                 {
                      k++;
                      tab[k]='(a[i],b[j])';
                 }
                 
    if(k==-1)
             return NULL;
    else
        return tab;
}    

int main()
{
    printf(" ================================================\n\n");
    int n = 4;
    int a[] = {1, 2, 3, 4};
    int b[] = {1, 2, 4, 8};
    
    char *kartezjansk = iloczynKartezjanski(a, b, n);
    printf("Iloczyn Kartezjanski: \n");
    for(i=0; i<=k; i++) 
             printf("%c ", kartezjansk[i]);
    printf("\n\n");

    system("PAUSE");
    return 0;
}
Ostatnio zmieniony 29 sty 2015, o 19:00 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Gouranga
Użytkownik
Użytkownik
Posty: 1563
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 243 razy

[C] iloczyn kartezjański 2 tablic

Post autor: Gouranga »

zdefiniuj sobie strukturę do typu pary intów:

Kod: Zaznacz cały

typedef struct intPair {
  int a,b;
} intPair;
potem jak masz dwie tablice:

Kod: Zaznacz cały

int a[n], b[n];
to zakładasz tablicę:

Kod: Zaznacz cały

intPair t[n*n];
i w pętli wypełniasz ją dostając się do środka przez kropkę:

Kod: Zaznacz cały

t[i*n+j].a = a[i];
t[i*n+j].b = b[j];
ODPOWIEDZ