PDA

View Full Version : [C] Stampa ordinata di matrice


k_mishima
24-01-2007, 15:54
Ciao volevo sapere come stampare una matrice ben incolonnata, vi faccio subito uno screen per farvi capire cosa intendo.

http://img440.imageshack.us/my.php?image=matrice0ij.jpg

Vedete? Più è grande il size, più i numeri sono incolonnati male. Purtroppo accade perchè ci sono negativi e numeri a 1 e 2 cifre.

Qual'è il codice per incolonnarle bene?

Tnx

wingman87
24-01-2007, 16:38
Usa la sprintf, qui ti spiega l'utilizzo:
http://www.cplusplus.com/reference/clibrary/cstdio/sprintf.html
ma se cerchi con google trovi anche altro

k_mishima
24-01-2007, 17:52
mmm, sicuro? Io devo stampare dei numeri di un array 2d, non una stringa

stella_650
24-01-2007, 19:01
Ciao volevo sapere come stampare una matrice ben incolonnata, vi faccio subito uno screen per farvi capire cosa intendo.

http://img440.imageshack.us/my.php?image=matrice0ij.jpg

Vedete? Più è grande il size, più i numeri sono incolonnati male. Purtroppo accade perchè ci sono negativi e numeri a 1 e 2 cifre.

Qual'è il codice per incolonnarle bene?

Ciao.Il tuo problema è legato all'uso della printf, quindi niente di complicato.( devi inserire delle andate a capo e degli spazi in maniera opportuna)
Se "pastavi" il codice con le printf da te realizzate, forse era + semplice agire ed intervenire direttamente sul codice.

stella_650
24-01-2007, 19:10
http://www.mat.uniroma3.it/users/liverani/IN1/20010316c.html

questo potrebbe aiutarti;)

mapomapo
24-01-2007, 20:26
io ho risolto così...non sarà stupendo..ma...

void stampa_matrice(int **a, int x,int y)
{
int i,j;

printf("\n");
printf("\tLa matrice risulterà più o meno così...\n\n");
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
printf("%d\t", a[i][j]);
printf("\n\n");
}
}


la matrice è allocata dinamicamente...quindi forse dovrai cambiare il parametro..

Vito

k_mishima
24-01-2007, 20:48
grazie mille ragazzi ho risolto

for (i=0;i<n_righe;i++)
{
for (j=0;j<n_righe;j++)
printf ("%3d ",array[i][j]);
printf ("\n");
}


In rosso ho messo quello che ho aggiunto grazie a voi. Da quel che ho capito indica le cifre intere da stampare. Infatti ora me li incolonna bene perchè a me servono da 1 a 3 cifre (meno compreso) perchè i numeri da stampare nella matrice vanno da -20 a 20; e con lo spazio dopo la d separo i diversi numeri della stessa riga :D

l'ho visto nel link che ha messo stella_650 http://img118.exs.cx/img118/6574/t1zcheekkiss.gif

mapomapo grazie ma per adesso l'allocazione dinamica il prof non l'ha trattata, se ne parlera' nel secondo semestre :cry:
ma mi hai cmq insegnato lo '\t', non lo conoscevo

wingman87 grazie cmq per l'interessamento, ciao :)

stella_650
25-01-2007, 13:34
Sono contenta che hai risolto;)

l'ho visto nel link che ha messo stella_650

Non era nulla di particolarmente difficile:)
Ciao

trallallero
25-01-2007, 15:47
a questo punto fallo dinamico, é piú elegante ;)


for (i=0;i<n_righe;i++)
{
for (j=0;j<n_righe;j++)
printf ("%*3d ", size, array[i][j]);
printf ("\n");
}

dove size é o definito o const o inserito dall'utente.