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

質問編集履歴

1

プログラムの変更

2018/07/08 16:15

投稿

forza
forza

スコア21

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,10 @@
1
- C言語 C++ でファイル操作を行い多次元配列を並び替えたいのですが下記では上手くいきません。
1
+ C言語 C++ でファイル操作を行い多次元配列を並び替えたいのですが下記ではコンパイルは通りますが上手くいきません。
2
2
  どのように改善すれば良いのかを教えて頂けると助かります。
3
3
 
4
4
  7行4列の配列を左上が一番小さな数字が来て右下が一番大きな数字にしたいです。
5
5
 
6
- 現状、
7
- prog0210.c: In function ‘main’:
8
- prog0210.c:29:11: warning: assignment makes integer from pointer without a cast [enabled by default]
9
- tmp=number[j];
6
+ 宜しくお願いします。
10
- ^
11
- prog0210.c:30:17: error: incompatible types when assigning to type ‘int[4]’ from type ‘int *’
12
- number[j]=number[k];
13
- ^
14
- prog0210.c:31:17: error: incompatible types when assigning to type ‘int[4]’ from type ‘int’
15
- number[k]=tmp;
16
7
 
17
- といったエラーが出ています。
18
- 宜しくお願いします。
19
-
20
8
  #include<stdio.h>
21
9
  #include<stdlib.h>
22
10
 
@@ -24,37 +12,37 @@
24
12
  {
25
13
  int number[7][4];
26
14
  int tmp;
27
- int i, j,k;
15
+ int i, j;
28
16
 
29
- FILE *fin, *fout;
17
+ FILE *fin, *fout;
30
18
 
31
- if ((fin = fopen("data2.txt", "r")) == NULL)
19
+ if ((fin = fopen("data2", "r")) == NULL)
32
- {
20
+ {
33
21
  printf("入力ファイルがありません\n");
34
22
  exit(1);
35
- }
23
+ }
36
- if ((fout = fopen("data4.txt", "w")) == NULL)
24
+ if ((fout = fopen("data4", "w")) == NULL)
37
- {
25
+ {
38
26
  printf("出力ファイルがありません\n");
39
27
  exit(1);
40
- }
28
+ }
41
29
  for (i = 0; i<7; i++)
42
- {
30
+ {
43
31
  for (j = 0; j<4; j++)
44
- {
32
+ {
45
33
  fscanf(fin, "%d", &number[i][j]);
46
- if(number[j]>number[k])
34
+ if(number[i][j]>number[i][j+1])
47
- {
35
+ {
48
- tmp=number[j];
36
+ tmp=number[i][j];
49
- number[j]=number[k];
37
+ number[i][j]=number[i][j+1];
50
- number[k]=tmp;
38
+ number[i][j+1]=tmp;
51
- }
39
+ }
52
- fprintf(fout,"%d",number[i][j]);
40
+ fprintf(fout,"%d",number[i][j]);
53
- }
41
+ }
54
42
  fprintf(fout, "\n");
55
- }
43
+ }
56
44
  fclose(fin);
57
- fclose(fout);
45
+ fclose(fout);
58
46
 
59
47
  return 0;
60
48
  }