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

質問編集履歴

2

2020/07/23 05:20

投稿

morumotto
morumotto

スコア0

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- 構造体の配列の身長を降順に並べ替えて再度表示し直すプログラムを作りたいのですが、実行すると、エラーは起きないのにソート後のputs関数、printf関数が表示されません。ソート関数に問題があるのか、原因がわからないです。初めてで質問の仕方に拙いところがあるかもしれませんが、お力添え頂けないでしょうか。。
1
+ 構造体を降順に並べ替えて再度表示し直すプログラムを作りたいのですが、実行すると、エラーは起きないのにソート後のputs関数、printf関数が表示されません。ソート関数に問題があるのか、原因がわからないです。初めてで質問の仕方に拙いところがあるかもしれませんが、お力添え頂けないでしょうか。。
2
2
 
3
3
  ###該当のソースコード
4
4
 

1

2020/07/23 05:20

投稿

morumotto
morumotto

スコア0

title CHANGED
File without changes
body CHANGED
@@ -3,71 +3,6 @@
3
3
  ###該当のソースコード
4
4
 
5
5
  ```ここに言語名を入力
6
- #include <stdio.h>
7
- #include <stdlib.h>
8
6
 
9
- typedef struct __physcheck{
10
- char name[20];
11
- int height;
12
- double vision;
13
- }PhysCheck;
14
7
 
15
- void quick_height(PhysCheck a[], int left, int right){
16
- int pl = left;
17
- int pr = right;
18
- PhysCheck x = a[(pl+pr)/2];
19
-
20
- PhysCheck temp;
21
-
22
- while(pl<=pr){
23
-
24
- while(a[pl].height > x.height) pl++;
25
- while(a[pr].height < x.height) pr--;
26
-
27
- if(pl<pr){
28
- temp = a[pl];
29
- a[pl] = a[pr];
30
- a[pr] = temp;
31
- pl++;
32
- pr--;
33
- }
34
- }
35
- if(left<pr) quick_height(a,left,pr);
36
- if(pl<right) quick_height(a,pl,right);
37
- }
38
-
39
- int main(void){
40
- int i;
41
- PhysCheck x[] = {
42
- {"AKASAKA Tadao",162,0.3},
43
- {"KATOH Tomiaki",173,0.7},
44
- {"SAITOH Syouji",175,2.0},
45
- {"TAKEDA Shinya",171,1.5},
46
- {"NAGAHAMA Masaki",168,0.4},
47
- {"HAMADA Tetsuaki",174,1.2},
48
- {"MATSUTOMI Akio",169,0.8},
49
- };
50
- int nx = sizeof(x)/sizeof(x[0]);
51
-
52
- puts("----------身体検査一覧表----------");
53
- puts(" 氏名        身長 視力   ");
54
- puts("---------------------------------");
55
- for(i=0;i<nx;i++){
56
- printf("%-18.18s%4d%5.1f\n",x[i].name,x[i].height,x[i].vision);
57
- }
58
-
59
- quick_height(x,0,nx-1);
60
-
61
- puts("-----身体検査一覧表(ソート後)------");
62
- puts(" 氏名        身長 視力   ");
63
- puts("---------------------------------");
64
- for(i=0;i<nx;i++){
65
- printf("%-18.18s%4d%5.1f\n",x[i].name,x[i].height,x[i].vision);
66
- }
67
-
68
-
69
- return EXIT_SUCCESS;
70
- }
71
-
72
-
73
8
  ```