質問編集履歴

2

改良後のソースコードとかを乗せた

2018/09/22 02:12

投稿

rainy_073
rainy_073

スコア15

test CHANGED
File without changes
test CHANGED
@@ -236,6 +236,10 @@
236
236
 
237
237
  ```
238
238
 
239
-
240
-
241
-
239
+ 皆様のおかげでまた一歩前進できました
240
+
241
+ 今後ともきれいに書くように心がけていきたいと思います。
242
+
243
+
244
+
245
+ 回答者様方ありがとうございました!

1

改良後のソースコードを乗せた

2018/09/22 02:12

投稿

rainy_073
rainy_073

スコア15

test CHANGED
File without changes
test CHANGED
@@ -140,6 +140,102 @@
140
140
 
141
141
  ```
142
142
 
143
+ ```
144
+
145
+ 改良後のソースコード
146
+
147
+ #include <stdio.h>
148
+
149
+ #include<string.h>
150
+
151
+ int main(void) {
152
+
153
+ char str1[100],str2[100],sum[200],oki;
154
+
155
+ scanf("%s %s",str1,str2);
156
+
157
+ int i,j,keta1,keta2,cal=0,pl[10000];
158
+
159
+ for(i=0;i<10000;i++) pl[i]=-1;//plを後の計算(桁繰り上げ)で用いるためにー1で初期化
160
+
161
+ for(keta1=i=strlen(str1)-1;keta1/2<i;i--){//str1を計算しやすいよう(桁を合わせるため)に反転
162
+
163
+ oki=str1[i];
164
+
165
+ str1[i]=str1[keta1-i];
166
+
167
+ str1[keta1-i]=oki;
168
+
169
+ }
170
+
171
+ for(keta2=i=strlen(str2)-1;keta2/2<i;i--){//str2も同様に
172
+
173
+ oki=str2[i];
174
+
175
+ str2[i]=str2[keta2-i];
176
+
177
+ str2[keta2-i]=oki;
178
+
179
+ }
180
+
181
+ for(i=0;i<=keta1;i++){//1つ1つ計算してpl配列に代入(桁繰り上げはしない)
182
+
183
+ for(j=0;j<=keta2;j++){
184
+
185
+ cal=(str1[i]-'0')*(str2[j]-'0');
186
+
187
+ if(pl[i+j]==-1)
188
+
189
+ pl[i+j]=0;
190
+
191
+ pl[i+j]+=cal;
192
+
193
+ }
194
+
195
+ }
196
+
197
+
198
+
199
+
200
+
201
+ for(j=0;pl[j]!=-1;j++){//桁繰り上げ
202
+
203
+ if(pl[j]>9){
204
+
205
+ if(pl[j+1]==-1)
206
+
207
+ pl[j+1]=0;
208
+
209
+ pl[j+1]+=pl[j]/10;
210
+
211
+ pl[j]%=10;
212
+
213
+ }
214
+
215
+ }
216
+
217
+ for(i=j=j-1;i>=0;i--){//反転処理をしていたのでもどす
218
+
219
+
220
+
221
+ sum[j-i]=pl[i]+'0';
222
+
223
+
224
+
225
+ }
226
+
227
+
228
+
229
+ printf("%s\n",sum);
230
+
231
+
232
+
233
+ return 0;
234
+
235
+ }
236
+
237
+ ```
238
+
143
239
 
144
240
 
145
241