fork download
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. struct data {
  10. struct data *next ;
  11. int num ;
  12. int score ;
  13. };
  14.  
  15.  
  16.  
  17. int M( int num ) {
  18. num = num * 2 / 3 ;
  19. if(num %3 != 0 ) num++ ;
  20. int i = 0 ;
  21. bool yes = true ;
  22. // 檢查 num 是否為質數 //
  23. for (i = 2 ; i < num ; i++ )
  24. if ( num%i == 0 ) yes = false ;
  25.  
  26. if( yes ) return num ;
  27. // END //
  28. // 找出比NUM大的質數 //
  29. num++;
  30. yes = true ;
  31. for( num ; num ; num ++) {
  32. for ( i = 2 ; i< num ; i++) {
  33. if(num %i == 0 ) yes = false ;
  34. } // for
  35. if ( yes ) return num ;
  36. } // for
  37. } // int M()
  38.  
  39. int H( int num ,int m ) {
  40. num = ( ( 97 * num ) + 11 ) % m ;
  41. return num ;
  42. }
  43.  
  44.  
  45. int main()
  46. {
  47. FILE *fI ;
  48. FILE *fO ;
  49. char ip[200] ; // input檔名 //
  50. char op[200]= "" ; // output //
  51. cout << "請輸入檔案名稱:" ;
  52. cin >> ip ;
  53. int num ; // 學生總數 //
  54. char temp ;
  55. strcat( op, ip ) ;
  56. strcat( op, "_output.txt" ) ;
  57. strcat( ip, ".txt" ) ;
  58. fI = fopen( ip, "r") ;
  59. fO = fopen( op, "w" ) ;
  60. fscanf(fI, "%d%c", &num ,&temp ) ;
  61. data dataA[M( num )] ;
  62. data dataB[M( num )] ;
  63. data dtemp ;
  64. int number ; // 學號 //
  65. int sc ; // 分數 //
  66. int index ;
  67.  
  68. fscanf( fI, "%d%c%d%c", &number,&temp,&sc,&temp ) ;
  69. index = H (number, M( num ) ) ;
  70.  
  71.  
  72. dataA[index].num = number ;
  73. dataA[index].score = sc;
  74. dataA[index].next = NULL ;
  75.  
  76. dataB[index].num = number ;
  77. dataB[index].score = sc;
  78. dataB[index].next = NULL ;
  79.  
  80.  
  81. while( temp != '\n' ) {
  82.  
  83.  
  84. fscanf( fI, "%d%c%d%c", &number,&temp,&sc,&temp ) ;
  85. index = H (number, M( num ) ) ;
  86. /*******AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA****/
  87. if( dataA[index].num == 0 ) {
  88. dataA[index].num = number ;
  89. dataA[index].score = sc;
  90. dataA[index].next = NULL ;
  91. }
  92.  
  93. else {
  94. dataA[index].next=dataA[index] ;
  95. dataA[index].num = number ;
  96. dataA[index].score = sc;
  97. }
  98. /*******AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA****/
  99.  
  100. /*******BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB****/
  101.  
  102. /*******BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB****/
  103. }
  104.  
  105.  
  106.  
  107. fclose(fI) ;
  108. fclose(fO) ;
  109. }
  110.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty