質問編集履歴

1

質問内容の修正

2018/07/17 15:54

投稿

hide09090909
hide09090909

スコア68

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,20 @@
1
1
  C言語でファイルに記載された複数の数値を読み取り、それを昇順にバブルソートさせたいです。
2
2
 
3
- 下記は任意の個数の値をブルソートさせていますがファイルに記載された値取りしてソートさせるやり方がわかりせん
3
+ 下記は任意の個数の値をファイルから読み取り、バブルソートさせ、処理時間を出させてい
4
4
 
5
+ 結果欄に貼り付けているように行いたいことはできているのですが、不明な値も一緒に出力されています。
6
+
5
- どなたかわかるかた教えてください。
7
+ どなたか原因がわかるかたいらっしゃいましたら、教えてください。
6
8
 
7
9
 
10
+
11
+ ◯ソースコード
8
12
 
9
13
  ```ここに言語を入力
10
14
 
11
15
  #include<stdio.h>
16
+
17
+ #include <time.h>
12
18
 
13
19
 
14
20
 
@@ -16,41 +22,83 @@
16
22
 
17
23
  {
18
24
 
25
+ int i, n, j;
19
26
 
27
+ int sin[30];
20
28
 
21
- int hai[]={5,20,4,15};
29
+ int temp=0;
22
30
 
23
- int temp;
31
+ clock_t start, end;
24
-
25
- int i,j;
26
32
 
27
33
 
28
34
 
35
+ FILE *fp;
36
+
37
+
38
+
39
+ fp = fopen("test.txt", "r"); /* 読み込みモードでファイルをオープン */
40
+
41
+ if(fp == NULL) {
42
+
43
+ printf("ファイルを開くことが出来ませんでした.¥n");
44
+
45
+ }
46
+
47
+
48
+
49
+ for(i=0; i<29; i++){
50
+
51
+ fscanf(fp, "%d", &(sin[i]) ); /* 1行読む,ファイルのデータの並びにあわせる */
52
+
53
+ }
54
+
55
+
56
+
57
+ fclose(fp);
58
+
59
+
60
+
61
+ for(i=0; i<10; i++) {
62
+
63
+ printf("%d¥n", sin[i]);
64
+
65
+ }
66
+
67
+
68
+
69
+ start = clock();
70
+
29
- for(i=0;i<=3;i++)
71
+ for(i=0;i<=29;i++)
30
72
 
31
73
  {
32
74
 
33
- for(j=3;j>i;j--)
75
+ for(j=29;j>i;j--)
34
76
 
35
77
  {
36
78
 
37
- if(hai[j]<hai[j-1])
79
+ if(sin[j]<sin[j-1])
38
80
 
39
81
  {
40
82
 
41
- temp=hai[j];
83
+ temp=sin[j];
42
84
 
43
- hai[j]=hai[j-1];
85
+ sin[j]=sin[j-1];
44
86
 
45
- hai[j-1]=temp;
87
+ sin[j-1]=temp;
46
88
 
47
89
  }
48
90
 
49
91
  }
50
92
 
51
- printf("%d ",hai[i]);
93
+ printf("%d ",sin[i]);
52
94
 
53
95
  }
96
+
97
+ end = clock();
98
+
99
+ printf( "処理時間:%lu[ms]¥n", end - start );
100
+
101
+
54
102
 
55
103
 
56
104
 
@@ -59,3 +107,81 @@
59
107
  }
60
108
 
61
109
  ```
110
+
111
+
112
+
113
+ ◯test.txt
114
+
115
+ ```ここに言語を入力
116
+
117
+ 1
118
+
119
+ 3
120
+
121
+ 5
122
+
123
+ 7
124
+
125
+ 9
126
+
127
+ 10
128
+
129
+ 2
130
+
131
+ 4
132
+
133
+ 6
134
+
135
+ 8
136
+
137
+ 11
138
+
139
+ 13
140
+
141
+ 15
142
+
143
+ 17
144
+
145
+ 19
146
+
147
+ 20
148
+
149
+ 12
150
+
151
+ 14
152
+
153
+ 16
154
+
155
+ 18
156
+
157
+ 21
158
+
159
+ 23
160
+
161
+ 25
162
+
163
+ 27
164
+
165
+ 29
166
+
167
+ 30
168
+
169
+ 22
170
+
171
+ 24
172
+
173
+ 26
174
+
175
+ 28
176
+
177
+ ```
178
+
179
+
180
+
181
+ ◯結果
182
+
183
+ ```ここに言語を入力
184
+
185
+ 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]
186
+
187
+ ```