Albesa81 ha scritto:michele1239 ha scritto:(sarò cieco?!?!?)
No, semplicemente non hai riletto il tuo codice, altrimenti avresti notato quell'assegnamento invertito.
l'ho riletto,ma ripeto non trovo l'errore...
Albesa81 ha scritto:michele1239 ha scritto:(sarò cieco?!?!?)
No, semplicemente non hai riletto il tuo codice, altrimenti avresti notato quell'assegnamento invertito.
min=mat[j][j];
mat[j][j]=min;
michele1239 ha scritto:grazie mille per la pazienza credo di aver capito!!
michele1239 ha scritto:potresti darmi qualche consiglio su come evitare certi errori?
#include <stdio.h>
#include <stdlib.h>
#define MAXDIM 1024
// funzione che ordina la diagonale principale
void
ordinaDiagonale( int mat[], int dim )
{
for ( int i = 0; i < dim * dim; i += dim + 1 ) {
int pos = i;
int min = mat[i];
for ( int j = i + dim + 1; j < dim * dim; j += dim + 1 ) {
if ( mat[j] < min ) {
min = mat[j];
pos = j;
}
}
{ /* SWAP( mat[i], mat[pos] ) */
int temp = mat[i];
mat[i] = mat[pos];
mat[pos] = temp;
}
}
}
int
main( void )
{
printf( "Inserisci la dimensione:\t" );
int dim;
scanf( "%d", &dim );
if ( dim <= 0 || dim > 32 ) {
puts( "ERRORE: dimensione non corretta" );
return EXIT_FAILURE;
}
int mat[MAXDIM] = {0};
for ( int i = 0; i != dim; ++i ) {
for ( int j = 0; j != dim; ++j ) {
printf( "Inserisci il valore a[%d][%d]:\t", i, j );
scanf( "%d", &mat[i * dim + j] );
}
}
ordinaDiagonale( mat, dim );
for ( int i = 0; i != dim; ++i ) {
for ( int j = 0; j != dim; ++j ) {
printf( "%d\t", mat[i * dim + j] );
}
puts( "" );
}
puts("\nE funziona anche con array multidimensionali statici");
int a[3][3] = { {0, 1, 3}, { 3, -2, 4 }, { 1, 1, 1 } };
for ( int i = 0; i != 3; ++i ) {
for ( int j = 0; j != 3; ++j ) {
printf( "%d\t", a[i][j] );
}
puts( "" );
}
puts("Diventa:");
ordinaDiagonale( &a[0][0], 3 );
for ( int i = 0; i != 3; ++i ) {
for ( int j = 0; j != 3; ++j ) {
printf( "%d\t", a[i][j] );
}
puts( "" );
}
}
-ansi
#define MAXNUM 15
/* funzione che ordina la diagonale principale */
void
ordinaDiagonale( int mat[][MAXNUM], int dim )
{
if ( dim >= 0 ) {
int i;
for ( i = 0; i < dim; i++ ) {
int pos = i;
{ /* ricerca elemento */
int min = mat[i][i];
int j;
for ( j = i + 1; j < dim; j++ ) {
if ( mat[j][j] < min ) {
min = mat[j][j];
pos = j;
}
}
}
{ /* SWAP( mat[i][i], mat[pos][pos]) */
int temp = mat[i][i];
mat[i][i] = mat[pos][pos];
mat[pos][pos] = temp;
}
}
}
}
insideworld ha scritto:di solito se un programmatore scrive un codice che compila al primo tentativo allora inizia a preoccuparsi seriamente XD
Visitano il forum: Nessuno e 1 ospite