# include <stdio.h>
# include <string.h>
# include <conio.h>
main ( )
{ char pn[ 10 ] [ 10 ] , t[ 10 ] ; int arr[ 10 ] , bur[ 10 ] , star[ 10 ] , finish[ 10 ] , tat[ 10 ] , wt[ 10 ] , i, j, n, temp; int totwt= 0 , tottat= 0 ;
printf ( "请输入进程数量:" ) ; scanf ( "%d" , & n) ; for ( i= 0 ; i< n; i++ ) { printf ( "请输入进程名称,到达时间,处理时间:" ) ; scanf ( "%s%d%d" , & pn[ i] , & arr[ i] , & bur[ i] ) ; } for ( i= 0 ; i< n; i++ ) { for ( j= 0 ; j< n; j++ ) { if ( arr[ i] < arr[ j] ) { temp= arr[ i] ; arr[ i] = arr[ j] ; arr[ j] = temp; temp= bur[ i] ; bur[ i] = bur[ j] ; bur[ j] = temp; strcpy ( t, pn[ i] ) ; strcpy ( pn[ i] , pn[ j] ) ; strcpy ( pn[ j] , t) ; } } } for ( i= 0 ; i< n; i++ ) { if ( i== 0 ) star[ i] = arr[ i] ; else star[ i] = finish[ i- 1 ] ; wt[ i] = star[ i] - arr[ i] ; finish[ i] = star[ i] + bur[ i] ; tat[ i] = finish[ i] - arr[ i] ; } printf ( "\n进程名称\t到达时间\t处理时间\t周转时间\t带权周转时间" ) ; for ( i= 0 ; i< n; i++ ) { printf ( "\n%s\t\t%3d\t\t%3d\t\t%6d\t\t%.2f" , pn[ i] , arr[ i] , bur[ i] , tat[ i] , tat[ i] * 1.00 / bur[ i] ) ; totwt+= tat[ i] * 1.00 / bur[ i] ; tottat+= tat[ i] ; } printf ( "\n平均周转时间:%.2f" , ( float ) tottat/ n) ; printf ( "\n平均带权周转时间:%.2f" , ( float ) totwt/ n) ; getch ( ) ; return 0 ;
}