View Full Version : Matrice quadrata
Salve, volevo sapere...come posso riempire una matrice quadrata a banda con un indice di sparsità dell'80% con il linguaggio c ?
:muro:
Up :muro: :muro: :muro: è mlto urgente....:cry:
Fenomeno85
17-02-2005, 17:36
ehm se mi spieghi cosa vuoi fare in maniera + semplice ti posso aiutare.
Cmq per dichiarare e scorre una matrice guarda il codice che ti ho postato
#include <stdio.h>
const N 10
int main (void){
int MatrQ [N][N];
for (int i=0;i<N;i++){ //scorri le righe
for (int j=0;j<Nj++){ //scorri le colonne
MatrQ [i][j] = valore;
}
}
return (0);
}
~§~ Sempre E Solo Lei ~§~
Deve essere riempita a caso e i numeri diversi da zero devono esserne solo l'80 %
Fenomeno85
17-02-2005, 17:58
capito lo faccio 10 min e te lo posto
~§~ Sempre E Solo Lei ~§~
Okey grazie MILLE ;) ;) ;)
Fenomeno85
17-02-2005, 18:28
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define N 5
int main (void){
int iReg = N*N*0.8; //indici di sparsità del 80%
int iApp=0; //variabile di appoggio per sapere quanti zero si sono inseriti
int MatrQ [N*N]; // matrice quadrata
int iVal;
srand(time(NULL));
/* riempimento dell'array con valori casuali */
for (int i=0;i<N*N;i++){
MatrQ [i] = rand ();
if (MatrQ [i]== 0){
if (iApp == iReg){ /* abbiamo già inserito iReg 0 */
do{
MatrQ[i] = rand();
}while (MatrQ[i] != 0);
}
else iApp++;
}
}
/* inserimento dei rimanenti zeri */
while (iApp < iReg){
iVal = rand()%(N*N);
if (MatrQ [iVal] != 0){
MatrQ [iVal] =0;
iApp++;
}
}
i=1;
for (int j =0;j<N*N;j++){
printf ("%d\t",MatrQ[j]);
if (j == N*i-1){
i++;
printf ("\n");
}
}
system ("PAUSE");
return (0);
}
~§~ Sempre E Solo Lei ~§~
Fenomeno85
17-02-2005, 18:33
ho lavorato su un array per semplificare di molto il problema
~§~ Sempre E Solo Lei ~§~
Non sò come ringraziarti......GRAZIE MILLEEEEEEEEEEE :)
Fenomeno85
17-02-2005, 18:59
una birra va + che bene :D
scherzo buon lavoro :)
se hai problemi o dei dubbi chiedi pure ;)
~§~ Sempre E Solo Lei ~§~
Fenomeno85
18-02-2005, 08:51
ho apportato una modifica cioè se vuoi che gli elementi siano compresi tra tra il valore -VAL e + VAL
#include <stdio.h>
#include <windows.h>
#include <time.h>
#define N 10
#define VAL 30 // range dei valori
int expo (int exp){
if (exp % 2 == 0) return 1;
return -1;
}
int main (void){
int iReg = N*N*0.8; //indici di sparsità del 80%
int iApp=0; //variabile di appoggio per sapere quanti zero si sono inseriti
int MatrQ [N*N]; // matrice quadrata
int iVal;
srand(time(NULL));
/* riempimento dell'array con valori casuali */
for (int i=0;i<N*N;i++){
iVal = rand()%VAL;
MatrQ [i] = expo(iVal) * iVal;
if (MatrQ [i]== 0){
if (iApp == iReg){ /* abbiamo già inserito iReg 0 */
do{
MatrQ[i] = rand();
}while (MatrQ[i] != 0);
}
else iApp++;
}
}
/* inserimento dei rimanenti zeri */
while (iApp < iReg){
iVal = rand()%(N*N);
if (MatrQ [iVal] != 0){
MatrQ [iVal] =0;
iApp++;
}
}
i=1;
for (int j =0;j<N*N;j++){
printf ("%d\t",MatrQ[j]);
if (j == N*i-1){
i++;
printf ("\n");
}
}
system ("PAUSE");
return (0);
}
~§~ Sempre E Solo Lei ~§~
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.