teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問内容の修正

2018/07/17 15:54

投稿

hide09090909
hide09090909

スコア68

title CHANGED
File without changes
body CHANGED
@@ -1,31 +1,94 @@
1
1
  C言語でファイルに記載された複数の数値を読み取り、それを昇順にバブルソートさせたいです。
2
- 下記は任意の個数の値をブルソートさせていますがファイルに記載された値取りしてソートさせるやり方がわかりせん
2
+ 下記は任意の個数の値をファイルから読み取り、バブルソートさせ、処理時間を出させてい
3
+ 結果欄に貼り付けているように行いたいことはできているのですが、不明な値も一緒に出力されています。
3
- どなたかわかるかた教えてください。
4
+ どなたか原因がわかるかたいらっしゃいましたら、教えてください。
4
5
 
6
+ ◯ソースコード
5
7
  ```ここに言語を入力
6
8
  #include<stdio.h>
9
+ #include <time.h>
7
10
 
8
11
  int main(void)
9
12
  {
13
+ int i, n, j;
14
+ int sin[30];
15
+ int temp=0;
16
+ clock_t start, end;
10
17
 
11
- int hai[]={5,20,4,15};
12
- int temp;
18
+ FILE *fp;
19
+
20
+ fp = fopen("test.txt", "r"); /* 読み込みモードでファイルをオープン */
21
+ if(fp == NULL) {
22
+ printf("ファイルを開くことが出来ませんでした.¥n");
23
+ }
24
+
25
+ for(i=0; i<29; i++){
26
+ fscanf(fp, "%d", &(sin[i]) ); /* 1行読む,ファイルのデータの並びにあわせる */
27
+ }
28
+
13
- int i,j;
29
+ fclose(fp);
30
+
31
+ for(i=0; i<10; i++) {
32
+ printf("%d¥n", sin[i]);
33
+ }
14
34
 
35
+ start = clock();
15
- for(i=0;i<=3;i++)
36
+ for(i=0;i<=29;i++)
16
37
  {
17
- for(j=3;j>i;j--)
38
+ for(j=29;j>i;j--)
18
39
  {
19
- if(hai[j]<hai[j-1])
40
+ if(sin[j]<sin[j-1])
20
41
  {
21
- temp=hai[j];
42
+ temp=sin[j];
22
- hai[j]=hai[j-1];
43
+ sin[j]=sin[j-1];
23
- hai[j-1]=temp;
44
+ sin[j-1]=temp;
24
45
  }
25
46
  }
26
- printf("%d ",hai[i]);
47
+ printf("%d ",sin[i]);
27
48
  }
49
+ end = clock();
50
+ printf( "処理時間:%lu[ms]¥n", end - start );
28
51
 
52
+
29
53
  return 0;
30
54
  }
55
+ ```
56
+
57
+ ◯test.txt
58
+ ```ここに言語を入力
59
+ 1
60
+ 3
61
+ 5
62
+ 7
63
+ 9
64
+ 10
65
+ 2
66
+ 4
67
+ 6
68
+ 8
69
+ 11
70
+ 13
71
+ 15
72
+ 17
73
+ 19
74
+ 20
75
+ 12
76
+ 14
77
+ 16
78
+ 18
79
+ 21
80
+ 23
81
+ 25
82
+ 27
83
+ 29
84
+ 30
85
+ 22
86
+ 24
87
+ 26
88
+ 28
89
+ ```
90
+
91
+ ◯結果
92
+ ```ここに言語を入力
93
+ 1¥n3¥n5¥n7¥n9¥n10¥n2¥n4¥n6¥n8¥n1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32767 処理時間:17[ms]
31
94
  ```