[C] Generalizzazione di inserimento valori in una matrice

di il
2 risposte

[C] Generalizzazione di inserimento valori in una matrice

Salve,
devo inserire degli elementi di un vettore in una matrice in un tale ordine. Per far capire meglio mostro qualche esempio

MATRICE [n][m] con n>m quindi esempio A[5][2]

Elementi da inserire sono {1,2,3,4,5,6,7,8,9}
Avrò dunque la matrice 5x2 cosi:

1 3
2 5
4 7
6 9
8

MATRICE [n][m] con n<m esempio [3][5]
Elementi da inserire sono {1,2,3,4,5,6,7,8,9}

1 3 6 9
2 5 8
4 7

Ecco il mio svolgimento che non funziona con le matrici [n][m] con n<m.
int **riempi(int *array,int r,int **tab,int n,int m){
	int i=1,j=0,k=1;
	tab[0][0]=array[0];
	  while(k<r){
		while(j<m-1 || i<n-1){
			if(k==r)
			 break;
		    tab[i][j]=array[k];
		    if(i!=0){
			   if(j+1<m){
			     i--;
			     j++;
			   }
			   else{
			   	j--;
			   	i=i+2;
			   	}
			   //printf("righe %d, colonne %d\n",i,j);
			}
			else{
			  if(j+1<n){
			   i=j+1;   
			   j=0;
		      }
		      else{
		      	i=n-1;
		      	j--;
		      }
			   printf("righe %d, colonne %d\n",i,j);
		    }
			k++;	
		}
	  } 
	return tab;	
}
Come potrei risolvere per l'altro tipo di matrice?

Grazie in anticipo!

2 Risposte

  • Re: [C] Generalizzazione di inserimento valori in una matrice

    E' sempre lo stesso argomento che riproponi in thread sempre diversi (contravvenendo al regolamento).

    Più volte ti è stato chiesto quale siano le regole di riempimento e ancora non hai risposto in modo chiaro.

    Potrai aprire mille thread (finché un moderatore non se ne accorge) ma se non dai PRECISE regole di riempimento, non avrai molte risposte.
  • Re: [C] Generalizzazione di inserimento valori in una matrice

    Invitiamo l'OP ad esprimere la propria richiesta una volta per tutte in modo chiaro ed intelligibile, continuando nel thread già aperto. Si tratta di un banale riempimento sequenziale per antidiagonali con salto?

    Il presente thread viene chiuso e ulteriori duplicazioni non saranno minimamente tollerate.
Devi accedere o registrarti per scrivere nel forum
2 risposte