Data una matrice e un vettore in ingresso restituisca un vettore (dimensione massimauguale a quella del vettore in ingresso) di struct indici {int i; int j} di tutti gli indici dellamatrice dove sono presenti multipli degli elementi del vettore. In pratica inseriti i valori della matrice, e del vettore, mi deve dare in uscita un vettore che mi dia la posizione dei multipli dei valori nel vettore iniziale, all'interno della matrice. Per esempio ho una matrice 2x2 con elementi 4, 5 e 3, 9 e un vettore con 2,3. Il vettore finale dovrebbe darmi la posizione (1,1) e (2,2) perchè 4 e 9 sono multipli di 2 e 3. Ho cercato di farlo, non mi da errori di compilazione ma il vettore finale non risulta. Spero possiate aiutarmi. Il codice è questo:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct {
int i;
int j;
} indice;
void risultato(int **matrice, int righe, int colonne, int *vettore, int dim_vett, indice *vettfin)
{
int i,j, x, y=0;
for (x=0; x<dim_vett; x++)
for (i=0; i<righe; i++)
for (j=0; j<colonne; j++)
if(vettore[x]%matrice[i][j]==0)
{ vettfin[y].i=i+1;
vettfin[y].i=j+1;
y++;
}
printf ("Il vettore di indici e' \n");
for (x=0;x<y;x++)
printf ("%d, ", vettfin[x].i);
printf ("%d \n", vettfin[x].j);
}
int main(void)
{
int n, m, i, j, x, **matrice, *vettore;
indice *vettfin;
printf ("Inserisci dimensione della matrice \n");
printf ("Inserisci numero righe: ");
scanf ("%d", &n);
printf ("Inserisci numero colonne: ");
scanf ("%d", &m);
matrice=(int **)malloc(sizeof(int *)*n);
for(i=0;i<n;i++)
matrice[i]=(int *)malloc(sizeof(int)*m);
for(i=0; i<n;i++)
for(j=0;j<m;j++)
{
printf ("Inserisci valore (%d,%d): ", i+1, j+1);
scanf ("%d", &matrice[i][j]);
}
printf ("Inserisci dimensione del vettore: ");
scanf ("%d", &x);
vettore= (int *)malloc(sizeof(int)*x);
for(i=0;i<x;i++)
{
printf ("Inserisci valore %d/%d: ", i+1, x);
scanf ("%d", &vettore[i]);
}
vettfin= (indice *)malloc(sizeof(int)*2*(n*m));
risultato(matrice, n, m, vettore, x, vettfin);
return 0;
}