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

回答編集履歴

3

一応 array へのコピーを追加

2021/11/12 16:56

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -23,6 +23,7 @@
23
23
  for(i=0;i<n;i++){
24
24
  printf("No.%d:",i+1);
25
25
  scanf("%d",&score[i]);
26
+ array[i]=score[i]; //必要?
26
27
  if(is_error(score[i])){
27
28
  i--;
28
29
  }

2

説明追加、コード位置移動

2021/11/12 16:56

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -3,19 +3,9 @@
3
3
  ----
4
4
 
5
5
  プロトタイプとは関係ありませんが、 get_score と error_message の箇所は次のようにしますと、入力の scanf 等や判定式が 1 ヶ所になります。
6
+ ( error_message を is_error と名前を変えています。)
6
7
 
7
8
  ```c
8
- void get_score( int score[ ], int n){
9
- int i;
10
- for(i=0;i<n;i++){
11
- printf("No.%d:",i+1);
12
- scanf("%d",&score[i]);
13
- if(is_error(score[i])){
14
- i--;
15
- }
16
- }
17
- }
18
-
19
9
  int is_error(int point){
20
10
  if( point<0){
21
11
  printf("****入力ミス:%dは0未満です****\n",point);
@@ -27,4 +17,15 @@
27
17
  }
28
18
  return 0;
29
19
  }
20
+
21
+ void get_score( int score[ ], int n){
22
+ int i;
23
+ for(i=0;i<n;i++){
24
+ printf("No.%d:",i+1);
25
+ scanf("%d",&score[i]);
26
+ if(is_error(score[i])){
27
+ i--;
28
+ }
29
+ }
30
+ }
30
31
  ```

1

プロトタイプと関係無無いですが修正例コード追加

2021/11/12 16:53

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -1,1 +1,30 @@
1
- プロトタイプ宣言を無くしたい/減らしたいということでしたら、"呼ばれる関数" を "呼ぶ関数" より先に書いておくことで出来ます。
1
+ プロトタイプ宣言を無くしたい/減らしたいということでしたら、"呼ばれる関数" を "呼ぶ関数" より先に書いておくことで出来ます。
2
+
3
+ ----
4
+
5
+ プロトタイプとは関係ありませんが、 get_score と error_message の箇所は次のようにしますと、入力の scanf 等や判定式が 1 ヶ所になります。
6
+
7
+ ```c
8
+ void get_score( int score[ ], int n){
9
+ int i;
10
+ for(i=0;i<n;i++){
11
+ printf("No.%d:",i+1);
12
+ scanf("%d",&score[i]);
13
+ if(is_error(score[i])){
14
+ i--;
15
+ }
16
+ }
17
+ }
18
+
19
+ int is_error(int point){
20
+ if( point<0){
21
+ printf("****入力ミス:%dは0未満です****\n",point);
22
+ return 1;
23
+ }
24
+ if( point>100){
25
+ printf("****入力ミス:%dは100をこえています****\n",point);
26
+ return 1;
27
+ }
28
+ return 0;
29
+ }
30
+ ```