codice:
void leggiStringa( stringa s, int r )
{
int register i;
printf("Inserisci i %d caratteri della stringa:\n", r);
for( i = 0; i <= r; i++ )
{
scanf("%c", &s[ i ] );
}
}
void stampaStringa( stringa s, int r )
{
int register i;
printf("\n\nStampo la stringa inserita...\n\n");
printf(" "); // spazio di tabulazione per allineare l'indice al corrispettivo carattere
for( i = 0; i < r; i++ )
{
printf("%d ", i );
}
printf("\n");
for( i = 0; i <= r; i++ )
{
printf("%c ", s[ i ] );
}
}
void swap( char *a, char *b )
{
char hold = *a;
*a = *b;
*b = hold;
}
int posizPrimoCarattere( stringa s, int r, int ppc )
{
int register i, j;
int hold;
stringa sSupport;
strncpy( sSupport, s, 2 );
printf("\n\nIl primo carattere della stringa e' %c", sSupport[ 1 ]);
printf("\n\nOrdino la stringa di caratteri...\n");
for( i = 1; i < r; i++ )
{
for( j = 0; j < r; j++ )
{
if( s[ j ] > s[ j + 1 ] )
{
swap( &s[ j ], &s[ j + 1 ] );
}
}
}
for( i = 0; i <= r; i++ )
{
printf("%c ", s[ i ] );
}
for( i = 0; i <= r; i++ )
{
if( s[ i ] == sSupport[ 1 ] )
{
ppc = i-1;
printf("\n\nLa posizione ordinata del primo carattere e' in posizione %d", ppc );
break;
}
}
return ppc;
}
In realtà anche se la inizializzo non mi fa passare il valore del primo carattere dell'array alla variabile.
cioè se
s[ 0 ] = a; // valore preso dalla funzione leggiStringa( stringa s, int r );
allora
char save = s[ 0 ]; // dovrebbe salere anch'essa: a.
invece non mi prende il valore.
Comunque sono andato avanti ugualmente con il metodo che ho scritto sopra.
-----------------------------------------------------------------------------
Adesso il mio problema è un altro: ho un certo size di un array e devo creare delle posizioni casuali con: srand( time( NULL ) ); e rand() % 1 + size;.
cioè se: il size dell'array è 6... allora devo creare un array con le posizioni da 0 ...5 in modo casuale ad esempio: 2, 5, 1, 3, 0, 4.
ovviamente se un valore già è stato estratto non lo devo riproporre perchè quella posizione già è stata presa cioè non posso avere: 2, 2, 1, 3 , 0, 0.
però mi escono valori strani...il codice che ho usato è questo:
codice:
void creaArrayIndice( array a, int rP )
{
srand( time( NULL ) );
int register i, j;
for( i = 0; i < rP; i++ )
{
for( j = 0; j < rP; j++ )
{
if( i != j )
{
while( a[ i ] == a[ j ] )
{
a[ i ] = rand() % 1 + rP;
}
}
}
}
printf("\n\nStampo l'array con le posizioni...\n");
for( i = 0; i < rP; i++ )
{
printf("%d = %d\n", i, a[ i ] );
}
}
dove rP è il mio size.