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

質問編集履歴

1

内容の修正

2021/06/10 04:00

投稿

Savanof
Savanof

スコア33

title CHANGED
File without changes
body CHANGED
@@ -1,15 +1,13 @@
1
1
  ### 前提・実現したいこと
2
+ C言語において、多倍長整数の加算を行うプログラムの実装を考えています。加算の部分の実装は大体終わっているのですが、計算結果を自分の定義した関数に渡し結果を出力する過程が上手くいかず、困っています。
2
3
 
3
- C言語において、多倍長整数の加算を行うプログラムの実装を考えています。加算の部分の実装は大体終わっているのですが、結果が上手く出力できなくて困っています。
4
4
  関数、構造体の引数や構造を変えれば、実装はできなくもないのですが、構造や引数は変えない方向性でお願いします。
5
-
6
5
  ### 該当のソースコード
7
6
  ソースコードの大まかなワークフローは下の様な形です。
8
7
  ```
9
- 1.キーボードからの入力をTest構造体に入れる
8
+ 1.キーボードからの入力を2つと、結果表示用の値をTest構造体に入れる
10
- 2.値をStructAdd関数に渡す
9
+ 2.(1.)で入れた値をStructAdd関数に渡す
11
- 3.計算の結果を引数rに入れて返す。
12
- 4.Test_print関数を介して、結果を表示する
10
+ 3.結果表示用の値(関数の引数 r ,入れた値pAdd_Answer)をTest_print関数を介して、結果を表示する
13
11
  ```
14
12
 
15
13
  ```C
@@ -30,13 +28,13 @@
30
28
  int size = strlen(str);
31
29
  int i,j;
32
30
  char tmp = {0};
33
-
31
+
34
32
  for(i = 0, j = size - 1; i < size / 2; i++, j--){
35
33
  tmp = str[i];
36
34
  str[i] = str[j];
37
35
  str[j] = tmp;
38
36
  }
39
-
37
+
40
38
  return;
41
39
  }
42
40
 
@@ -56,22 +54,33 @@
56
54
  char *val;
57
55
  };
58
56
 
57
+ // 長整数の表示関数
58
+ // pを標準出力に表示する
59
59
 
60
+ void Test_print(struct Test *p){
60
61
 
62
+ char *String_Print;
61
63
 
64
+ String_Print = p->val;
65
+
66
+ printf("Number (in Func Print) is %s \n",String_Print);
67
+
68
+ }
69
+
70
+
62
71
  // 加算関数
63
72
  // pとqの加算結果をrに入れる
64
73
  void Struct_add(struct Test *p, struct Test *q, struct Test *r){
65
74
 
66
75
  char *String_P , *String_Q , *String_R;
67
-
76
+
68
77
  String_P = p->val;
69
78
  String_Q = q->val;
70
79
  String_R = r->val;
71
-
80
+
72
81
  int p_Size = strlen(String_P);
73
82
  int q_Size = strlen(String_Q);
74
-
83
+
75
84
  int N = max(p_Size, q_Size);
76
85
  char Add_Str_Lis[N];
77
86
 
@@ -101,36 +110,23 @@
101
110
 
102
111
  ReverseStr(Add_Str_Lis);
103
112
  String_R = Add_Str_Lis;
104
- printf("Number(in Func add) is %s \n",String_R);
113
+ printf("Number(in Func add) is %s \n",String_R);
114
+ Test_print(r);
105
115
 
106
116
  }
107
117
 
108
118
 
109
119
 
110
- // 長整数の表示関数
111
- // pを標準出力に表示する
112
120
 
113
- void Test_print(struct Test *p){
114
121
 
115
- char *String_Print;
116
-
117
- String_Print = p->val;
118
-
119
- printf("Number (in Func Print) is %s \n",String_Print);
120
-
121
- }
122
-
123
-
124
-
125
122
  int main(){
126
123
 
127
124
  char input1[MAX_INPUT];
128
125
  char input2[MAX_INPUT];
129
126
  char Add_Char_answer[MAX_INPUT];
130
- char Sub_Char_Answer[MAX_INPUT];
131
127
 
132
- struct Test Number1 ,MathSign, Number2 , Add_Answer , Sub_Answer;
128
+ struct Test Number1, Number2 , Add_Answer , Sub_Answer;
133
-
129
+
134
130
  struct Test *pNumber1 = &Number1;
135
131
  struct Test *pNumber2 = &Number2;
136
132
  struct Test *pAdd_Answer = &Add_Answer;
@@ -141,45 +137,29 @@
141
137
  fgets(input1 , MAX_INPUT , stdin);
142
138
  remove_newline_ch(input1);
143
139
  ReverseStr(input1);
144
-
140
+
145
141
  printf("Enter The Second Number \n");
146
142
  fgets(input2 , MAX_INPUT , stdin);
147
143
  remove_newline_ch(input2);
148
144
  ReverseStr(input2);
149
145
 
150
-
146
+
151
147
  //入力をlonginit構造体に入れる。
152
148
  pNumber1 -> val = input1;
153
149
  pNumber2 -> val = input2;
154
150
  pAdd_Answer-> val = Add_Char_answer;
155
151
  // longinit_addを呼び出して加算。
156
152
  Struct_add(pNumber1 , pNumber2 , pAdd_Answer);
157
- Test_print(pAdd_Answer);
158
- printf("Nunber (in main()) is %s \n",Add_Answer);
159
-
160
-
161
153
  }
162
-
163
154
  ```
164
155
  ```
165
156
  <結果>
166
157
  Enter The First Number
167
- 198
158
+ 100
168
159
  Enter The Second Number
169
- 100
160
+ 200
170
- Number(in Func add) is 298
161
+ Number(in Func add) is 300
171
- Nunber (in main()) is
172
162
  Number (in Func Print) is
173
163
  ```
174
-
175
-
176
164
  ### 発生している問題・エラーメッセージ
177
- Struct_add関数内で加算の結果を表示するのは上手く動作しているのですが、main関数Test_print関数内で結果を表示するのが上手くいってないです。ポインターと構造体絡みのエラーだとは思うのですが、どの様に解決すればいいか分らないです。
165
+ Struct_add関数内で加算の結果を表示するのは上手く動作しているのですが、Struct_add関数内でTest_print関数に値を渡して結果を表示するのが上手くいってないです。ポインターと構造体絡みのエラーだとは思うのですが、どの様に解決すればいいか分らないです。
178
-
179
- ### 試したこと
180
-
181
- ここに問題に対して試したことを記載してください。
182
-
183
- ### 補足情報(FW/ツールのバージョンなど)
184
-
185
- ここにより詳細な情報を記載してください。