質問編集履歴

6

解決したバグの反映

2016/04/23 06:20

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,106 +6,32 @@
6
6
 
7
7
  ###発生している問題・エラーメッセージ
8
8
 
9
- main関数下の方該当する箇所にforが回らなバグあり。
9
+ 中置記法代入の文字列を入力してくださ:A=B
10
+
10
-
11
+ s[0]:A
12
+
13
+ s[1]:=
14
+
15
+ s[2]:B
16
+
17
+ prior(s[0]):5
18
+
19
+ prior(s[1]):0
20
+
21
+ prior(s[2]):5
22
+
23
+ p[0]:B
24
+
25
+ p[1]:B
26
+
27
+ p[2]:B
28
+
11
- すれば解消できるでほうか…
29
+ p[]にまく文字がはいらない
12
-
13
-
14
-
15
- エラーメッセージ
30
+
31
+
16
32
 
17
33
  '''
18
34
 
19
- gcc revp.c
20
-
21
- revp.c: In function ‘last_node’:
22
-
23
- revp.c:74: 警告: assignment from incompatible pointer type
24
-
25
- revp.c:75: 警告: assignment from incompatible pointer type
26
-
27
-
28
-
29
- ./a.out
30
-
31
- 中置記法で入力する文字列の文字個数を指定してください:13
32
-
33
- 中置記法の順に代入文の文字列を一文字ずつ入力してください:A=B-(C/D+E)*F
34
-
35
- s[0]:A
36
-
37
- s[1]:=
38
-
39
- s[2]:B
40
-
41
- s[3]:-
42
-
43
- s[4]:(
44
-
45
- s[5]:C
46
-
47
- s[6]:/
48
-
49
- s[7]:D
50
-
51
- s[8]:+
52
-
53
- s[9]:E
54
-
55
- s[10]:)
56
-
57
- s[11]:*
58
-
59
- s[12]:F
60
-
61
- prior(s[0]):5
62
-
63
- prior(s[1]):5
64
-
65
- prior(s[2]):5
66
-
67
- prior(s[3]):5
68
-
69
- prior(s[4]):5
70
-
71
- prior(s[5]):5
72
-
73
- prior(s[6]):5
74
-
75
- prior(s[7]):5
76
-
77
- prior(s[8]):5
78
-
79
- prior(s[9]):5
80
-
81
- prior(s[10]):5
82
-
83
- prior(s[11]):5
84
-
85
- prior(s[12]):5
86
-
87
- p[0]:
88
-
89
-
90
-
91
- '''
92
-
93
- 本来ならp[12]までで逆ポーランドの順に並び換えて出力してくれるはずなのだがそうなっていない。そもそもなぜp[0]までしか出力されていないのだろうか。また、prior関数の優先順位がなぜかずべて5になってしまいます。なぜでしょうか。
94
-
95
-
96
-
97
- ###該当のソースコード
98
-
99
- C
100
-
101
-
102
-
103
- ```
104
-
105
-
106
-
107
-
108
-
109
35
 
110
36
 
111
37
  #include<stdio.h>
@@ -158,7 +84,7 @@
158
84
 
159
85
  void initialize(node_type **pp) /* スタックの初期化 */
160
86
 
161
- {\
87
+ {
162
88
 
163
89
  *pp = NULL; /* スタックは空(先頭ノードなし) */
164
90
 
@@ -222,16 +148,20 @@
222
148
 
223
149
  node_type *temp=*pp;
224
150
 
151
+ if (*pp == NULL) return 0;
152
+
225
- while (pp != NULL) {
153
+ while (1) {
226
-
154
+
227
- temp = pp;
155
+ if (temp->next == NULL) {
156
+
228
-
157
+ break;
158
+
159
+ }
160
+
229
- pp = temp->next;
161
+ temp = temp->next;
230
162
 
231
163
  }
232
164
 
233
-
234
-
235
165
  return(temp->data);
236
166
 
237
167
  }
@@ -312,34 +242,30 @@
312
242
 
313
243
  int prior(data_type s){
314
244
 
315
-
316
-
317
- if(s='A' ||s= 'B' ||s= 'C' ||s= 'D' ||s= 'E' ||s= 'F' ||s='G')
245
+ if(s=='A' || s== 'B' ||s== 'C' ||s== 'D' ||s== 'E' ||s== 'F' || s=='G')
318
246
 
319
247
  return 5;
320
248
 
321
- if(s='=')
249
+ if(s=='=')
322
250
 
323
251
  return 0;
324
252
 
325
- if(s='(')
253
+ if(s=='(')
326
254
 
327
255
  return 4;
328
256
 
329
- if(s=')')
257
+ if(s==')')
330
258
 
331
259
  return 1;
332
260
 
333
- if(s='+'||'-')
261
+ if(s=='+'||'-')
334
262
 
335
263
  return 2;
336
264
 
337
- if (s='*'||'/')
265
+ if (s=='*'||s=='/')
338
266
 
339
267
  return 3;
340
268
 
341
-
342
-
343
269
  }
344
270
 
345
271
 
@@ -376,88 +302,78 @@
376
302
 
377
303
  data_type s[50],p[50];
378
304
 
379
- printf("中置記法で入力する文字列の文字個数を指定してください:");
305
+
380
-
381
- scanf("%d",&n);
306
+
382
-
383
- printf("中置記法の順に代入文の文字列を一文字ずつ入力してください:");
307
+ printf("中置記法の順に代入文の文字列を入力してください:");
384
-
308
+
385
- scanf("%c",&s[i]);
309
+ scanf("%s",s);
310
+
311
+ n = strlen(s);
312
+
313
+
386
314
 
387
315
  for(i=0;i<n;i++){
388
316
 
389
- scanf("%c",&s[i]);
317
+ printf("s[%d]:%c\n",i,s[i]);
390
318
 
391
319
  }
392
320
 
393
-
321
+ initialize(&head);
322
+
323
+ //優先順位の出力(優先順位がついているかの確認用)
394
324
 
395
325
  for(i=0;i<n;i++){
396
326
 
327
+ new_node(s[i],&head);
328
+
397
- printf("s[%d]:%c\n",i,s[i]);
329
+ printf("prior(s[%d]):%d\n",i,prior(s[i]));
330
+
331
+ }
332
+
333
+
334
+
335
+ for(i=1;i<n;i++){
336
+
337
+ while(prior(last_node(&head))>=prior(s[i]) && is_empty(head)==FAILURE){
338
+
339
+ //新たに読み取った文字の方が、スタック最上部の文字より優先度が低ければ、スタックをポップしてそれを読み取る。
340
+
341
+ p[j]=last_node(&head);
342
+
343
+ pop(&head);
344
+
345
+ j++;
346
+
347
+ }
348
+
349
+
350
+
351
+ //スタックの最上部の文字より新たに読み取った文字の優先順位が高ければ、スタックに積む
352
+
353
+ if(prior(last_node(&head))<prior(s[i])){
354
+
355
+ push(&head,s[i]);
356
+
357
+ }
398
358
 
399
359
  }
400
360
 
361
+
362
+
363
+ //逆ポーランド記法の順に出力する
364
+
365
+ for(i=0;i<j;i++){
366
+
367
+ printf("p[%d]:%c\n",i,p[i]);
368
+
369
+ }
370
+
371
+
372
+
373
+
374
+
401
375
 
402
376
 
403
- initialize(&head);
404
-
405
- new_node(s[0],&head);
406
-
407
-
408
-
409
- //優先順位の出力(優先順位がついているかの確認用)
410
-
411
- for(i=0;i<n;i++){
412
-
413
- printf("prior(s[%d]):%d\n",i,prior(s[i]));
414
-
415
- }
416
-
417
-
418
-
419
- for(i=1;i<n;i++){
420
-
421
- while(prior(last_node(&head))>=prior(s[i]) && is_empty(head)==FAILURE){
422
-
423
- //新たに読み取った文字の方が、スタック最上部の文字より優先度が低ければ、スタックをポップしてそれを読み取る。
424
-
425
- p[j]=last_node(&head);
426
-
427
- pop(&head);
428
-
429
- j++;
430
-
431
- }
432
-
433
-
434
-
435
- //スタックの最上部の文字より新たに読み取った文字の優先順位が高ければ、スタックに積む
436
-
437
- if(prior(last_node(&head))<prior(s[i])){
438
-
439
- push(&head,s[i]);
440
-
441
- }
442
-
443
- }
444
-
445
-
446
-
447
- //逆ポーランド記法の順に出力する
448
-
449
- for(i=0;i<j;i++){
450
-
451
- printf("p[%d]:%c\n",i,p[i]);
452
-
453
- }
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
377
  return 0;
462
378
 
463
379
 
@@ -466,6 +382,4 @@
466
382
 
467
383
 
468
384
 
469
-
470
-
471
385
  ```

5

書き換えたコードに変更

2016/04/23 06:20

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -26,45 +26,71 @@
26
26
 
27
27
 
28
28
 
29
- ./a.out
29
+ ./a.out
30
30
 
31
31
  中置記法で入力する文字列の文字個数を指定してください:13
32
32
 
33
- 中置記法の順に代入文の文字列を一文字ずつ入力してください:A=(B-C)/D+E*F
33
+ 中置記法の順に代入文の文字列を一文字ずつ入力してください:A=B-(C/D+E)*F
34
34
 
35
35
  s[0]:A
36
36
 
37
37
  s[1]:=
38
38
 
39
- s[2]:(
39
+ s[2]:B
40
-
40
+
41
- s[3]:B
41
+ s[3]:-
42
-
42
+
43
- s[4]:-
43
+ s[4]:(
44
44
 
45
45
  s[5]:C
46
46
 
47
- s[6]:)
48
-
49
- s[7]:/
47
+ s[6]:/
50
-
48
+
51
- s[8]:D
49
+ s[7]:D
52
-
50
+
53
- s[9]:+
51
+ s[8]:+
52
+
54
-
53
+ s[9]:E
54
+
55
- s[10]:E
55
+ s[10]:)
56
56
 
57
57
  s[11]:*
58
58
 
59
59
  s[12]:F
60
60
 
61
+ prior(s[0]):5
62
+
63
+ prior(s[1]):5
64
+
65
+ prior(s[2]):5
66
+
67
+ prior(s[3]):5
68
+
69
+ prior(s[4]):5
70
+
71
+ prior(s[5]):5
72
+
73
+ prior(s[6]):5
74
+
75
+ prior(s[7]):5
76
+
77
+ prior(s[8]):5
78
+
79
+ prior(s[9]):5
80
+
81
+ prior(s[10]):5
82
+
83
+ prior(s[11]):5
84
+
85
+ prior(s[12]):5
86
+
61
87
  p[0]:
62
88
 
63
89
 
64
90
 
65
91
  '''
66
92
 
67
- 本来ならp[12]までで逆ポーランドの順に並び換えて出力してくれるはずなのだがそうなっていない。そもそもなぜp[0]までしか出力されていないのだろうか。
93
+ 本来ならp[12]までで逆ポーランドの順に並び換えて出力してくれるはずなのだがそうなっていない。そもそもなぜp[0]までしか出力されていないのだろうか。また、prior関数の優先順位がなぜかずべて5になってしまいます。なぜでしょうか。
68
94
 
69
95
 
70
96
 
@@ -76,6 +102,12 @@
76
102
 
77
103
  ```
78
104
 
105
+
106
+
107
+
108
+
109
+
110
+
79
111
  #include<stdio.h>
80
112
 
81
113
  #include<stdlib.h>
@@ -92,6 +124,10 @@
92
124
 
93
125
 
94
126
 
127
+
128
+
129
+
130
+
95
131
  typedef char data_type; /*char型をdata_type型に置き換える */
96
132
 
97
133
 
@@ -100,7 +136,7 @@
100
136
 
101
137
  typedef struct node_tag {
102
138
 
103
- data_type data;
139
+ data_type data;
104
140
 
105
141
  struct node_tag *next; /* 後続ノードへのポインタ */
106
142
 
@@ -130,6 +166,8 @@
130
166
 
131
167
 
132
168
 
169
+
170
+
133
171
  /* ノードを後ろに付け加える*/
134
172
 
135
173
 
@@ -172,6 +210,10 @@
172
210
 
173
211
  }
174
212
 
213
+
214
+
215
+
216
+
175
217
  //末尾のノードの文字を出力する
176
218
 
177
219
  data_type last_node(node_type **pp)
@@ -182,125 +224,137 @@
182
224
 
183
225
  while (pp != NULL) {
184
226
 
185
- temp = pp;
227
+ temp = pp;
186
-
228
+
187
- pp = temp->next;
229
+ pp = temp->next;
230
+
231
+ }
232
+
233
+
234
+
235
+ return(temp->data);
236
+
237
+ }
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+ int is_empty(node_type *p) { /* 空スタックのとき真、 そうでないならば偽を返す */
246
+
247
+ if (p == NULL) return TRUE; /* 空スタックのとき */
248
+
249
+ else return FALSE; /* 空スタックでないとき */
250
+
251
+ }
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+ //スタックの先頭ノードの削除
262
+
263
+ int pop(node_type **pp)
264
+
265
+ {
266
+
267
+ node_type *temp;
268
+
269
+ if (*pp != NULL) {
270
+
271
+ temp = (*pp)->next;
272
+
273
+ free(*pp); /* メモリの解放 */
274
+
275
+ *pp = temp;
276
+
277
+ return SUCCESS;
188
278
 
189
279
  }
190
280
 
191
-
192
-
193
- return(temp->data);
281
+ else return FAILURE;
194
-
282
+
195
- }
283
+ }
196
-
197
-
198
-
199
-
200
-
201
-
202
-
203
- int is_empty(node_type *p) { /* 空スタックのとき真、 そうでないならば偽を返す */
284
+
204
-
205
- if (p == NULL) return TRUE; /* 空スタックのとき */
285
+
206
-
207
- else return FALSE; /* 空スタックでないとき */
286
+
208
-
209
- }
287
+
210
-
211
-
212
-
288
+
213
- //スタックの先頭ノードの削除
289
+ //スタックの先頭へのノードの挿入
214
-
290
+
215
- int pop(node_type **pp)
291
+ int push(node_type **pp, data_type x)
216
292
 
217
293
  {
218
294
 
219
- node_type *temp;
295
+ node_type *temp;
220
-
221
- if (*pp != NULL) {
296
+
222
-
223
- temp = (*pp)->next;
297
+ temp = new_node(x, pp);
224
-
298
+
225
- free(*pp); /* メモリの解放 */
299
+ if (temp == NULL) return FAILURE;
226
-
300
+
227
- *pp = temp;
301
+ *pp = temp;
228
-
302
+
229
- return SUCCESS;
303
+ return SUCCESS;
230
-
304
+
231
- }
305
+ }
306
+
307
+
308
+
309
+
310
+
232
-
311
+ //文字の優先順位を出力する
312
+
313
+ int prior(data_type s){
314
+
315
+
316
+
317
+ if(s='A' ||s= 'B' ||s= 'C' ||s= 'D' ||s= 'E' ||s= 'F' ||s='G')
318
+
233
- else return FAILURE;
319
+ return 5;
320
+
234
-
321
+ if(s='=')
322
+
323
+ return 0;
324
+
325
+ if(s='(')
326
+
327
+ return 4;
328
+
329
+ if(s=')')
330
+
331
+ return 1;
332
+
333
+ if(s='+'||'-')
334
+
335
+ return 2;
336
+
337
+ if (s='*'||'/')
338
+
339
+ return 3;
340
+
341
+
342
+
235
- }
343
+ }
236
-
237
-
238
-
239
-
240
-
344
+
345
+
346
+
347
+
348
+
241
- //スタックの先頭挿入
349
+ //スタックの先頭の取得
242
-
350
+
243
- int push(node_type **pp, data_type x)
351
+ data_type top(node_type *p)
244
352
 
245
353
  {
246
354
 
247
- node_type *temp;
248
-
249
- temp = new_node(x, pp);
250
-
251
- if (temp == NULL) return FAILURE;
252
-
253
- *pp = temp;
254
-
255
- return SUCCESS;
256
-
257
- }
258
-
259
- //文字の優先順位を出力する
260
-
261
- int prior(data_type s){
262
-
263
-
264
-
265
- if(s=('A' || 'B' || 'C' || 'D' || 'E' || 'F' ||'G'))
266
-
267
- return 5;
268
-
269
- if(s='=')
270
-
271
- return 0;
272
-
273
- if(s='(')
274
-
275
- return 4;
276
-
277
- if(s=')')
278
-
279
- return 1;
280
-
281
- if(s='+'||'-')
282
-
283
- return 2;
284
-
285
- if (s='*'||'/')
286
-
287
- return 3;
288
-
289
-
290
-
291
- }
292
-
293
-
294
-
295
- //スタックの先頭のデータの取得
296
-
297
- data_type top(node_type *p)
298
-
299
- {
300
-
301
355
  if (p == NULL) /* 空スタックのとき */
302
356
 
303
- return ('\0');
357
+ return ('\0');
304
358
 
305
359
  else /* 空スタックでないとき */
306
360
 
@@ -310,6 +364,12 @@
310
364
 
311
365
 
312
366
 
367
+
368
+
369
+
370
+
371
+
372
+
313
373
  int main(void){
314
374
 
315
375
  int n=0,i=0,j=0;
@@ -330,7 +390,7 @@
330
390
 
331
391
  }
332
392
 
333
-
393
+
334
394
 
335
395
  for(i=0;i<n;i++){
336
396
 
@@ -338,12 +398,24 @@
338
398
 
339
399
  }
340
400
 
401
+
402
+
341
- initialize(&head);
403
+ initialize(&head);
342
404
 
343
405
  new_node(s[0],&head);
344
406
 
345
407
 
346
408
 
409
+ //優先順位の出力(優先順位がついているかの確認用)
410
+
411
+ for(i=0;i<n;i++){
412
+
413
+ printf("prior(s[%d]):%d\n",i,prior(s[i]));
414
+
415
+ }
416
+
417
+
418
+
347
419
  for(i=1;i<n;i++){
348
420
 
349
421
  while(prior(last_node(&head))>=prior(s[i]) && is_empty(head)==FAILURE){
@@ -354,38 +426,46 @@
354
426
 
355
427
  pop(&head);
356
428
 
357
- j++;
429
+ j++;
430
+
358
-
431
+ }
432
+
433
+
434
+
359
-
435
+ //スタックの最上部の文字より新たに読み取った文字の優先順位が高ければ、スタックに積む
436
+
437
+ if(prior(last_node(&head))<prior(s[i])){
438
+
439
+ push(&head,s[i]);
360
440
 
361
441
  }
362
442
 
363
-
443
+ }
364
-
444
+
445
+
446
+
365
- //スタック最上部の文字より新たに読み取った文字の優先位が高ければ、スタック積む
447
+ //逆ポーランド記法の順に出力する
448
+
366
-
449
+ for(i=0;i<j;i++){
450
+
367
- if(prior(last_node(&head))<prior(s[i])){
451
+ printf("p[%d]:%c\n",i,p[i]);
368
-
369
- push(&head,s[i]);
370
452
 
371
453
  }
372
454
 
373
- }
455
+
374
-
375
-
376
-
377
- //逆ポーランド記法の順に出力する
456
+
378
-
379
- for(i=0;i<j;i++){
457
+
380
-
381
- printf("p[%d]:%c\n",i,p[i]);
458
+
382
-
383
- }
459
+
384
-
385
-
386
460
 
387
461
  return 0;
388
462
 
463
+
464
+
389
- }
465
+ }
466
+
467
+
468
+
469
+
390
470
 
391
471
  ```

4

実行結果の追記

2016/04/23 05:46

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ###発生している問題・エラーメッセージ
8
8
 
9
- main関数の下の方に該当する箇所にバグあり。
9
+ main関数の下の方に該当する箇所にfor文が回らないバグあり。
10
10
 
11
11
  どうすれば解消できるでほうか…
12
12
 
@@ -14,23 +14,19 @@
14
14
 
15
15
  エラーメッセージ
16
16
 
17
+ '''
18
+
17
- $ gcc revp.c
19
+ gcc revp.c
18
-
20
+
19
- revp.c: 関数 ‘last_node’:
21
+ revp.c: In function ‘last_node’:
20
-
22
+
21
- revp.c:74:9: 警告: 互換性のないポインタ型からの代入です [デフォルトで有効]
23
+ revp.c:74: 警告: assignment from incompatible pointer type
22
-
23
- temp = pp;
24
+
24
-
25
- ^
26
-
27
- revp.c:75:7: 警告: 互換性のないポインタ型からの代入です [デフォルトで有効]
25
+ revp.c:75: 警告: assignment from incompatible pointer type
28
-
29
- pp = temp->next;
26
+
30
-
31
- ^
27
+
32
-
28
+
33
- $ ./a.out
29
+ ./a.out
34
30
 
35
31
  中置記法で入力する文字列の文字個数を指定してください:13
36
32
 
@@ -62,9 +58,11 @@
62
58
 
63
59
  s[12]:F
64
60
 
65
- p[0]:
61
+ p[0]:
62
+
63
+
64
+
66
-
65
+ '''
67
-
68
66
 
69
67
  本来ならp[12]までで逆ポーランドの順に並び換えて出力してくれるはずなのだがそうなっていない。そもそもなぜp[0]までしか出力されていないのだろうか。
70
68
 

3

コードブロックの追記

2016/04/23 05:36

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -74,9 +74,9 @@
74
74
 
75
75
  C
76
76
 
77
+
78
+
77
- '''
79
+ ```
78
-
79
-
80
80
 
81
81
  #include<stdio.h>
82
82
 
@@ -390,4 +390,4 @@
390
390
 
391
391
  }
392
392
 
393
- '''
393
+ ```

2

コードブロックの追記

2016/04/23 02:24

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  C
76
76
 
77
- /*
77
+ '''
78
78
 
79
79
 
80
80
 
@@ -389,3 +389,5 @@
389
389
  return 0;
390
390
 
391
391
  }
392
+
393
+ '''

1

質問内容をやや見やすく改変

2016/04/23 02:23

投稿

awellbottom
awellbottom

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,25 +1,17 @@
1
1
  ###前提・実現したいこと
2
2
 
3
- 被演算数(1文字分の英字でよい)、演算子、および括弧(左括弧「(」と右括弧「)」) のトークンで構成された中置記法の算術式を読み込\
3
+ 被演算数(1文字分の英字)、演算子、および括弧(左括弧「(」と右括弧「)」) のトークンで構成された中置記法の算術式を読み込み、 スタックを用いて逆ポーランド記法の式を出力する Cのプログラムを作成する。
4
-
5
- み、 スタックを用いて逆ポーランド記法の式を出力する Cのプログラムを作成する。それから、 次の(1)~(3)の中置記法の算術式に対する実行結果を求める。
6
-
7
-
8
-
9
- (1) A=(B-C)/D+E*F
10
-
11
- (2) A = B - ( C / D + E ) * F
12
-
13
- (3) A = B - C / ( D + E * F )
14
-
15
-
16
-
17
- ただし、プログラム中で使用する演算子は、 二項演算子の加算「+」、減算「-」、乗算「*」、除算「/」、 および代入「=」だけに限定する。
18
4
 
19
5
 
20
6
 
21
7
  ###発生している問題・エラーメッセージ
22
8
 
9
+ main関数の下の方に該当する箇所にバグあり。
10
+
11
+ どうすれば解消できるでほうか…
12
+
13
+
14
+
23
15
  エラーメッセージ
24
16
 
25
17
  $ gcc revp.c
@@ -84,30 +76,6 @@
84
76
 
85
77
  /*
86
78
 
87
- プログラミング言語実験
88
-
89
- 課題3
90
-
91
- 被演算数(1文字分の英字でよい)、演算子、および括弧(左括弧「(」と右括弧「)」) のトークンで構成された中置記法の算術式を読み込み、 スタ\\
92
-
93
- ックを用いて逆ポーランド記法の式を出力する Cのプログラムを作成しなさい。それから、 次の(1)~(3)の中置記法の算術式に対する実行結果\\
94
-
95
- を求めなさい。
96
-
97
-
98
-
99
- (1) A=(B-C)/D+E*F
100
-
101
- (2) A = B - ( C / D + E ) * F
102
-
103
- (3) A = B - C / ( D + E * F )
104
-
105
-
106
-
107
- ただし、プログラム中で使用する演算子は、 二項演算子の加算「+」、減算「-」、乗算「*」、除算「/」、 および代入「=」だけに限定することにする
108
-
109
- */
110
-
111
79
 
112
80
 
113
81
  #include<stdio.h>