Is this what you want? It looks like you're looping way too much and reusing i when you want to continue on an error and really do nothing:
Code:
// D. Burke (Noir)
#include <stdio.h>
#define MAX_ARRAY 7
void get_payrate( int id[], float payrate[], int size );
void put_payrate( int id[], float payrate[], int size );
int main( void ) {
int id[MAX_ARRAY] = {1111, 2222, 3333, 4444, 5555, 6666, 7777};
float payrate[MAX_ARRAY] = {0};
get_payrate( id, payrate, MAX_ARRAY );
printf( "The IDs and Payrates are:\n" );
put_payrate( id, payrate, MAX_ARRAY );
return 0;
}
void get_payrate( int id[], float payrate[], int size ) {
int i = 0;
for ( i = 0; i < size; ) {
printf( "ID: %d\tPayrate: ", id[i] );
fflush( stdout );
if ( scanf( "%f", &payrate[i] ) == 1 ) {
if ( payrate[i] < 6.0 ) {
printf( "invalid payrate\n" );
continue;
} else {
++i;
}
}
}
}
void put_payrate( int id[], float payrate[], int size ) {
int i;
for ( i = 0; i < size; i++ ) {
printf( "ID: %d\tPayrate: %.2f\n", id[i], payrate[i] );
}
}