fork download
  1. // Q.3
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define DATA_MAX 50
  7.  
  8. void random_data(int data[],int num)
  9. {
  10. int i, n;
  11.  
  12. for (i = 0; i < num; i++) {
  13. data[i] = -1;
  14. }
  15. for (i = 0; i < num; ) {
  16. n = (int)((double)num*rand()/(1.0+RAND_MAX));
  17. if (data[n] != -1) continue;
  18. data[n] = i;
  19. i++;
  20. }
  21. }
  22.  
  23. void output_data(int data[], int num, const char *filename)
  24. {
  25. FILE *pfile;
  26. int i;
  27.  
  28. for (i = 0; i < num; i++) {
  29. printf("%d %d\n", i, data[i]);
  30. }
  31.  
  32. pfile = fopen(filename, "wt");
  33. if (!pfile) return;
  34. for (i = 0; i < num; i++) {
  35. fprintf(pfile, "%d %d\n", i, data[i]);
  36. }
  37. fclose(pfile);
  38. }
  39.  
  40. void bubble(int data[],int num)
  41. {
  42. int i, j, t;
  43.  
  44. for (i = num - 1; i > 0; i--) {
  45. for (j = 0; j < i; j++) {
  46. if (data[j] > data[j+1]) {
  47. t = data[j];
  48. data[j] = data[j+1];
  49. data[j+1] = t;
  50. }
  51. }
  52. }
  53. }
  54.  
  55. int main()
  56. {
  57. int data[DATA_MAX];
  58. int num;
  59.  
  60. srand(1);
  61.  
  62. printf("データの数(MAX:%d)>", DATA_MAX);
  63. scanf("%d", &num);
  64. random_data(data, num);
  65. output_data(data, num, "q3-1.log");
  66.  
  67. bubble(data, num);
  68. output_data(data, num, "q3-2.log");
  69.  
  70. return 0;
  71. }
  72.  
Success #stdin #stdout 0.01s 1856KB
stdin
10
stdout
データの数(MAX:50)>0 9
1 4
2 5
3 1
4 7
5 6
6 8
7 2
8 0
9 3
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9