合計 昨日 今日

forやifを使った問題

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

返信する

Advanced BBCode Box 3 :: ヘルプ ページ Advanced BBCode Box 3 (aka ABBC3)  
選択テキストを切り取る (カット) 選択テキストをコピー コピーしたテキストを貼り付け (ペースト) 選択したテキストから全ての BBCode タグを削除します。 箇条書きリスト 連番付き箇条書きリスト リスト項目 水平線 太字 斜体 下線 取り消し線 上付き文字 下付き文字 フェードイン / アウト テキスト グラデーション 正当テキスト 左揃え 中央ぞろえ 右揃え 整形済みテキスト
タブインデント挿入 コード 引用 本題と外れた内容を囲むオフトピックテキストを挿入します。 Web アドレス Eメール 画像を挿入します。 サムネイル画像を挿入します。 Youtube 動画 を挿入します。 ニコニコ動画を挿入します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
トピックのレビュー
このトピックはまだ解決していません
   

展開ビュー トピックのレビュー: forやifを使った問題

Re: forやifを使った問題

投稿記事 by かずま » 2017年10月10日(火) 16:09

些細なことですが、printf("ありません\n", a, b); は、
「, a, b」が余計ですね。

さらに、for文で a の倍数だけを候補にすると、
b で割り切れるかどうかだけで公倍数の判定ができます。
コード[C]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int main(void)
{
    int a, b, sum = 0;
    printf("整数 a, b を入力せよ・・・>");
    if (scanf("%d%d", &a, &b) != 2) return 1;
    printf("100以下の %d と %d の公倍数は\n", a, b);
    for (int i = a; i <= 100; i += a)
        if (i % b == 0) {
            sum++;
            printf("%d\t", i);
        }
 
    if (sum > 0)
        printf("\nの %d個です。\n", sum);
    else
        printf("ありません\n");
    return 0;
}

Re: forやifを使った問題

投稿記事 by かずま » 2017年10月10日(火) 15:38

そのプログラムを実行すると、実行結果は
コード[Text]: 全て選択
1
2
3
4
整数a,bを入力せよ・・・>8 12
100以下の8と12の公倍数は
24  48  72  96  101
の4個です。

余計な 101 が出ているだけですから、
 printf("%d\t\nの%d個です。\n", i, sum);

 printf("\nの%d個です。\n", sum);
に変えるだけで完成だと思うんですが。

Re: forやifを使った問題

投稿記事 by krgpsrrr » 2017年10月10日(火) 12:02

初めてなため、ルールがよくわかってませんでした。あと一歩で完成できそうですがまだダメな部分がありそうです。よろしくお願いします。

Re: forやifを使った問題

投稿記事 by krgpsrrrr » 2017年10月10日(火) 12:01

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
main()
{
 int a, b,i, sum = 0;
 printf("整数a,bを入力せよ・・・>");
 scanf_s("%d%d", &a, &b);
 printf("100以下の%dと%dの公倍数は\n", a, b);
 for (i = a; i <= 100; i++)
 {
  if (i%a == 0 && i%b == 0)
  {
   sum++;
   printf("%d\t", i);
  }
 }
 if (0 < sum )
 {
  printf("%d\t\nの%d個です。\n", i, sum);
 }
 else
  {
   printf("ありません\n", a, b);
  }
 
}

Re: forやifを使った問題

投稿記事 by かずま » 2017年10月10日(火) 11:42

krgpsrrr さんが書きました:この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。

きっかけを掴むために、公倍数がない場合に出力できた
というプログラムを、フォーラムルールにあるように
code タグを使って貼り付けてください。

forやifを使った問題

投稿記事 by krgpsrrr » 2017年10月10日(火) 11:02

問題
整数a.bを入力すると100以下のaとbの公倍数を全て書き出し、その個数を教えてくれるプログラムを作成しなさい。
ただし、公倍数がひとつもない場合は"ありません"と表示させること。


整数を2つ入力せよ・・・>8 12
100以下の8と12の公倍数は
24 48 72 96
の4個です。

この問題なのですが、公倍数がない場合は出力できたのですが、ある場合にエラーがでてしまい、きっかけも掴めないためどうしようもないです。
先日forについて学んだばかりなので理解できてないのが要因だと思われます。教えていただきたいです。

ページトップ