Innanzi tutto la prossima volta usa i tag appositi, non è difficile, basta scrivere:
[*code*]
CODICE TUO
[/*code*]
Nota però che non devi mettere gli asterischi...e prima di postare magari fai una anteprima e vedi se esce in maniera corretta.
counque ho dato un'occhiata al codice da te proposto e ho notato qualche errorino banale di distrazione tipo che sbagli a passare i parametri alla funzione che legge la matrice:
codice:
void leggi_mat(int m[100][100], int &c, int&r);
in questo modo leggi la matrice all'incontrario, perchè dal main tu passi:
codice:
leggi_mat(m,r,c);
quindi si invertono le variabili di riga e colonna;
Lo stesso accade nella funzione di stampa che richiami dalla funzione che scambia le righe!
--2) Poi c'è un errore anche nella funzione della ricerca della somma minima:
codice:
int sommamin(int m[][100],int r, int c)
{int somma=0,temp,j,i,k;
for(i=0;i<r;i++)
{temp=0;
for(j=0;j<c;j++)
{temp+=m[i][j];
---->somma=temp;<----
if(temp<somma)
{ somma=temp;
k=i;
}
}
return k;}
Non capisco a cosa serve somma = temp! così facendo, non entrerà main nell'if sotto! e inoltre ti conviene dichiarare somma=1000, altrimenti se la somma minore è 5 già non entrerà mai nell'if e il programma va in palla! quindi modificala così:
codice:
int sommamin(int m[][100],int r, int c)
{int somma=1000,temp,j,i,k;
for(i=0;i<r;i++)
{temp=0;
for(j=0;j<c;j++)
{temp+=m[i][j];
if(temp<somma)
{ somma=temp;
k=i;
}
}
return k;}
Poi c'è una cosa che non ho ben capito, ovvero perchè nella funzione di scambio di righe definisci temp come vettore di 100 unità?? per fare quello che fai basta una variabile int normale senza nessun vettore!
codice:
void scambia_righe(int m[][100], int&r,int&c, int x, int k)//scambia riga x con riga k
{int j,y,i;
int temp;
for(j=0;j<c;j++)
{temp=m[x][j]; //temp è una variabile d'appoggio x lo scambio
m[x][j]=m[k][j];
m[k][j]=temp;
}
stampa_mat(m,r,c); }
per il resto sembra andare bene...testalo un pò e vedi su funziona come dovrebbe altrimenti posta di nuovo!