PDA

Visualizza la versione completa : [C] Unione matrici e inserimento valore in array 1D


Alessio86
28-01-2008, 22:22
salve allora dovrei creare 2 matrici e vedere quali valori compaiono in entrambe per inserirli in un array 1D ma mi sono inchiodato appunto su questa procedura nn so come far ciclare le 2 matrici ..... sorry ma sto sfasato e da stamattina le 8 che sto a studiare ..uffff





#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
#include "math.h"
#define SIZE 3
#define SIZE_1 4
void rand ( int *a, int *b);
void visualizza ( int *a, int *b);
void unione(int *a, int *b, int *c);
int main()
{
int a[SIZE][SIZE];
int b[SIZE_1][SIZE_1];
int c[1000];
srand((int)time(NULL));
rand (&a[0][0],&b[0][0]);
visualizza (&a[0][0],&b[0][0]);
unione(&a[0][0],&b[0][0],c);
return 0;


}






//* Creo le matrici*//


void rand ( int *a, int *b)
{
int i ,j,k,y;

for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
*(a+SIZE*i+j)= rand()%20;
}
}

for(k=0;k<SIZE_1;k++)
{
for(y=0;y<SIZE_1;y++)
{
*(b+SIZE_1*k+y)= rand()%20;
}
}
}




//* Visualizza l' array*//


void visualizza ( int *a, int *b)
{
int i ,j,k,y;

for(i=0;i<SIZE;i++)
{
printf("\n");
for(j=0;j<SIZE;j++)
{
printf("A[%d][%d]= %d\t",i,j,*(a+SIZE*i+j));
}
}
printf("\n-------------------------------------------------------\n");
for(k=0;k<SIZE_1;k++)
{
printf("\n");
for(y=0;y<SIZE_1;y++)
{
printf("B[%d][%d]= %d\t",k,y,*(b+SIZE_1*k+y));
}
}
}







void unione(int *a, int *b, int*c)
{
int i=0,j=0,k=0,y=0,g=0;
int size=0;

size=(SIZE*SIZE)+(SIZE_1*SIZE_1);
printf("\n");


//*QUI DOVREI FAR CICLARE LE MATRICI E FARE UN CONFRONTO PER POI INMETTERE IL CALORE NELL ARRAY C[]*//

if(*(b+SIZE_1*k+y)==*(a+SIZE*i+j))
{
c[g]=*(b+SIZE_1*k+y);
printf("C[%d]=%d\n",g,c[g]);
g++;
}
}

Alessio86
29-01-2008, 07:21
nessuno che mi puo aiutare ?

oregon
29-01-2008, 11:38
Parti da questa versione della funzione unione



void unione(int *a, int *b, int*c)
{
int pc=0;
int i,j,k,y;

for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
for(k=0;k<SIZE_1;k++)
for(y=0;y<SIZE_1;y++)
if((*(a+SIZE*i+j)) == (*(b+SIZE_1*k+y)))
c[pc++] = *(a+SIZE*i+j);

printf("\n\n");
for(i=0; i<pc; i++)
printf("c[%d]=%d\n", i, c[i]);
}

Alessio86
29-01-2008, 19:28
ciao
grazie x l' aiuto :D anche se mi venuta 1 idea + rapida ovvero portare la matrice 1 interamente nell' array 1d , da li fare un ordinamento (buble sort) ed eliminare i volori uguali , per poi confrontare ogni singolo valore nell' array 1d rispetto la matrice e in caso che il valore esiste gia nell array 1d nn inserirlo in alternativa inseriscilo.

credo che sia 1 cosa un po + tranquilla ....... :confused:

oregon
29-01-2008, 19:59
Originariamente inviato da Alessio86
credo che sia 1 cosa un po + tranquilla ....... :confused:

Mah ... non ne sono convinto ... prova ...

Loading