初歩的な質問ですみません。
<問題>
1から100までの数値を画面に表示するプログラムを書け。
そのうち数値が3の倍数であった場合、「この数値は3の倍数です」5の倍数であった場合、「この数値は5の倍数です」と表示されるようにしろ。
また、数値が3と5両方の倍数であった場合、「この数値は3と5両方の倍数です」と表示されるようにしろ。
うろ覚えなので問題がわかりずらく申し訳ありません;
自分てやってみたところ、1から100まで数字を表示し、3と5の倍数の数字だけ表示を変えられたのですが、3と5両方の倍数の数字の表示を変えることができません;
どうしたらいいのでしょうか?
問題の一部がわかりません;
Re:問題の一部がわかりません;
どのようなアルゴリズムを使っているのかわからないので、的確なアドバイスが出来ませんが。
僕がぱっと思いついたのを書くなら剰余算を使って、
if(3で割って余りが0){
if(5で割って余りが0){
この数値は3と5両方の倍数です
}else{
この数値は3の倍数です
}
}else if(5で割って余りが0){
この数値は5の倍数です
}else{
普通に表示
}
っていう処理にするかな。
なんか見づらいな。
追記
って思ったらミスってたんで一部訂正しました
全角でインデントしたんで、まだなんかミスってるかも・・・
僕がぱっと思いついたのを書くなら剰余算を使って、
if(3で割って余りが0){
if(5で割って余りが0){
この数値は3と5両方の倍数です
}else{
この数値は3の倍数です
}
}else if(5で割って余りが0){
この数値は5の倍数です
}else{
普通に表示
}
っていう処理にするかな。
なんか見づらいな。
追記
って思ったらミスってたんで一部訂正しました
全角でインデントしたんで、まだなんかミスってるかも・・・
Re:問題の一部がわかりません;
ありがとうございます。
自分が書いたものです。
#include <stdio.h>
int main()
{
int i;
for(i=1; i<=100; i++){
if(i % 3 == 0){
printf("この数値3の倍数です\n");
}else if(i % 5 == 0){
printf("この数値は5の倍数です\n");
}else if(i % 3 == 0 && i % 5 == 0){
printf("この数値は3と5の倍数です\n");
}else{
printf("%d\n", i);
}
}
3と5両方の倍数の部分以外はちゃんと表示されます。
わかりづらくてすみません;
自分が書いたものです。
#include <stdio.h>
int main()
{
int i;
for(i=1; i<=100; i++){
if(i % 3 == 0){
printf("この数値3の倍数です\n");
}else if(i % 5 == 0){
printf("この数値は5の倍数です\n");
}else if(i % 3 == 0 && i % 5 == 0){
printf("この数値は3と5の倍数です\n");
}else{
printf("%d\n", i);
}
}
3と5両方の倍数の部分以外はちゃんと表示されます。
わかりづらくてすみません;
Re:問題の一部がわかりません;
ソースコードはpreタグで囲ってくださいね。上に規約がありますhttp://dixq.net/board/board.html
判定の順番を変えましょう
100までの数
↓ 3の倍数を抜く
100までの数(3の倍数なし)
↓ 5の倍数を抜く
100までの数(3の倍数と5の倍数がない。つまりこの時点で3の倍数かつ5の倍数は1つもない)
↓ 3の倍数かつ、5の倍数を抜く(どうせない)
というわけです。
最初に3の倍数かつ5の倍数か、の判定式を持ってきましょう
判定の順番を変えましょう
100までの数
↓ 3の倍数を抜く
100までの数(3の倍数なし)
↓ 5の倍数を抜く
100までの数(3の倍数と5の倍数がない。つまりこの時点で3の倍数かつ5の倍数は1つもない)
↓ 3の倍数かつ、5の倍数を抜く(どうせない)
というわけです。
最初に3の倍数かつ5の倍数か、の判定式を持ってきましょう
Re:問題の一部がわかりません;
> 自分が書いたものです。
>1から100までの数値を画面に表示する
この仕様が抜けています。
> }else if(i % 3 == 0 && i % 5 == 0){
このif文に到達するのは、
iが3で割り切れず、かつ、5でも割り切れないときです。
したがって、このif文の条件を満たすことはありません。
sizumaさんのアドバイスにしたがって、
ソースを書き換えてみてはいかがでしょうか。
>1から100までの数値を画面に表示する
この仕様が抜けています。
> }else if(i % 3 == 0 && i % 5 == 0){
このif文に到達するのは、
iが3で割り切れず、かつ、5でも割り切れないときです。
したがって、このif文の条件を満たすことはありません。
sizumaさんのアドバイスにしたがって、
ソースを書き換えてみてはいかがでしょうか。
Re:問題の一部がわかりません;
たくさんのお答えありがとうございます。
規約はまったく読んでいませんでした;すみません;
よく考えて書き換えてみようと思います。
ありがとうございました!
規約はまったく読んでいませんでした;すみません;
よく考えて書き換えてみようと思います。
ありがとうございました!