質問編集履歴
1
内容の修正
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
|
-
|
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
|
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
|
-
|
158
|
+
100
|
168
159
|
Enter The Second Number
|
169
|
-
|
160
|
+
200
|
170
|
-
Number(in Func add) is
|
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関数内で加算の結果を表示するのは上手く動作しているのですが、
|
165
|
+
Struct_add関数内で加算の結果を表示するのは上手く動作しているのですが、Struct_add関数内でTest_print関数に値を渡して結果を表示するのが上手くいってないです。ポインターと構造体絡みのエラーだとは思うのですが、どの様に解決すればいいか分らないです。
|
178
|
-
|
179
|
-
### 試したこと
|
180
|
-
|
181
|
-
ここに問題に対して試したことを記載してください。
|
182
|
-
|
183
|
-
### 補足情報(FW/ツールのバージョンなど)
|
184
|
-
|
185
|
-
ここにより詳細な情報を記載してください。
|