電子書籍の厳選無料作品が豊富!

以下のプログラムは配列opに"+-*/"の四則演算子を入れています。
配列に入れた四つの文字を三つ取り出して組み合わせを全て表示させたいのです。
修正箇所を教えていただけますか?
組み合わせは重なっても可とする。
例:
+++ OK
**+ OK
+** OK
#include <stdio.h>

int main()
{
inti,j, k,l;/*i=1桁目 j=2桁目 k=3桁目 l=4桁目*/
charop[4] = "+-*/";

for(op[i]=0; op[i]<4; op[i]++){
for(op[j]=0; op[j]<4; op[j]++) {
for(op[k]=0; op[k]<4; op[k]++) {
for(op[l]=0; op[l]<4; op[l]++){
printf("%c%c%c%c\n", op[i], op[j], op[k], op[l]);
}
}
}
}
return 0;
}

A 回答 (3件)

「四つの文字を三つ取り出して組み合わせを全て表示させたい」


とありますが、順番は考慮する必要があるのですか。

要するに「+ー/」と「/+ー」は別扱いになるのか。ということです。
両方表示する必要があるのか、ないのか。

また、「+++」は組み合わせではないと思いますが、
表示する必要があるのですか。

プログラミングというのは、まず、期待する処理結果があって
その実現方法を記述することです。

ご質問の内容ですと、期待する処理結果が曖昧です。

=============
曖昧なところを想像で補完して回答すると

for(op[i]=0; op[i]<4; op[i]++){
  ↓
for( i = 0 ; i < 4 ; i++ ){

でいいんじゃないですかね。

同様に、j、k、l のループも。

あと、

printf("%c%c%c%c\n", op[i], op[j], op[k], op[l]);

これだと4文字表示しているから、
1つ削ればいいと思います。
    • good
    • 0

同意>#1. この問題に対して何をどう考えた結果このプログラムに至ったのか, さっぱり理解できない.

    • good
    • 0

なぜ、op[何とか] をループ制御用に使っているんでしょうか。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!