アプリ版:「スタンプのみでお礼する」機能のリリースについて

配列matを以下のように宣言し、要素の値が2の倍数、または3の倍数ならば、その添え字を書き出すプログラムを作成しています。が、どうにも上手くいかなくて困ってます。条件式に誤りがあるのだと思いますが、解る方、何処が間違っているのか教えてください。
すぐに回答が欲しいです。

#include <stdio.h>
int main(void)
{
int i,mat[10]={5,3,8,2,7,1,10,4,9,6};
for(i=0;i<10;i++)
{
if(mat[i]/ 2==1 || mat[i]/ 3==1){
printf("%d",i);
}
}
printf("\n");
return(0);
}

A 回答 (5件)

例えば


「mat[i]/ 2==1」
という条件が何を意味するか, 「日本語で」説明してください.
    • good
    • 0

2の倍数、というのを別の言い方で表現してみてください。

    • good
    • 0

「2の倍数」は「2で割って、何がどうなった時」ですか?


「mat[i]/2==1」は「2で割って、何がどうなった時」ですか?

「3の倍数」は「3で割って、何がどうなった時」ですか?
「mat[i]/3==1」は「3で割って、何がどうなった時」ですか?

それぞれの「何がどうなった時」は一致していますか?

もし一致してないなら「条件式が誤っている」のです。

もし一致しているなら「条件式が合っている」のです。

以下、ヒント。

Cでは、intの割り算では「割り切れた」と言うのは判断できません。

なぜなら、intの割り算は、割り切れる割り切れないに関わらず、整数にされた商が計算され、剰余は無視されます。

つまり「割り算だけではダメ」と言う事です。

従って
「2の倍数」は「2で割って、何がどうなった時」ですか?
と言われて
「2の倍数」は「2で割って、割り切れた時」です。
と考えてもダメだ、と言う事です。

別の考え方をする必要があります。

以上、ヒント終り。
    • good
    • 0

老婆心ながらいいますと、


前の質問を締め切ってから新しい質問をすると良い回答がつきやすくなりますよ。
    • good
    • 0

if(mat[i]/ 2==1 || mat[i]/ 3==1){ を


if(mat[i]% 2==0 || mat[i]% 3==0){ に代えて下さい。
    • good
    • 0

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