C言語関係掲示板

過去ログ

No.1192 1〜100までの約数の個数を表示するプログラム

[戻る] [ホームページ]
No.15570

1〜100までの約数の個数を・・・
投稿者---ニケ(2004/07/16 10:25:23)


はじめまして,ニケと申します。
早速ですが,先日学校の授業で
「1〜100までの約数の個数を表示するプログラム」を作れという課題が出されたのですが,プログラミングにおいてど素人の私にはまったくわかりません。
↓↓のように表示させたいのですが・・・。
***********************************
1の約数の個数は1個です。
2の約数の個数は2個です。
3の約数の個数は2個です。
4の約数の個数は3個です。
    ・
    ・
    ・
100の約数の個数は9個です。
***********************************
関数を使って入力しろとのことなんですが・・どのようにすればいいのか検討がつかないのです。どなたか教えていただけないでしょうか・・?お願いします!


No.15573

Re:1〜100までの約数の個数を・・・
投稿者---円零(2004/07/16 11:09:33)


そう言うのを「課題の丸投げ」と言って、ここの掲示板では禁止になってるんですが…
掲示板の注意書きも読めないようでは、教科書もろくに読んでないんじゃないかと思えるわけで、
「まずはテキストを読んで勉強しなさい」と答えたくなってしまうのです。

とりあえずそのプログラム、入力の必要がないので、
「関数を使って 入力 」と言う時点であなたが問題をちゃんと読んでいない可能性があります。

まあまずは、約数の数を手作業で求める時の手順を考えてみてはどうですか。
つぎにその手続きをCのプログラムに置き換る方向で考える。


No.15577

Re:1〜100までの約数の個数を・・・
投稿者---ニケ(2004/07/16 11:26:44)


>「まずはテキストを読んで勉強しなさい」と答えたくなってしまうのです。
3時間ほど教科書とにらめっこをしても分からなかったのでお聞きしているのですが・・・
課題の「丸投げ」というわけではありません。「入力した数の約数の個数を表示させるプログラム」は作れました。
それを応用する力が僕にはないので・・・

>>「関数を使って 入力 」と言う時点であなたが問題をちゃんと読んでいない可能性があります。
メモ帳の段階で,関数を使った表現の仕方でプログラムを作れということなんですが・・・これでも分かりにくいかもしれませんね。
作文が苦手なので表現がうまくできませんでした。すみません・・・


No.15574

Re:1〜100までの約数の個数を・・・
投稿者---他力本願(2004/07/16 11:09:59)


【掲示板ご利用上の注意】をよく読んで、出直してきましょう。



No.15575

Re:1〜100までの約数の個数を・・・
投稿者---くらたっち(2004/07/16 11:12:21)


>プログラミングにおいてど素人の私にはまったくわかりません。
>関数を使って入力しろとのことなんですが・・

関数を使用するとこまで習っているのならば初級者には
なっているとは思うのですが・・・
私はC言語中級者くらいなのでこのくらいなら教えることができます。

関数を使って入力(?)の意味がよくわかりませんが・・・

#include<stdio.h>
#define MAX 100

int Yakusu(int kazu);

int main(void){
    
    int i =0;
    int kosu = 0;
    
    printf("***********************************\n");
    for(i=1;i<=MAX;i++){
        kosu = Yakusu(i);
        printf("%3d の約数の個数は%3d 個です。\n",i,kosu);
    }
    printf("***********************************\n");
    
    return 0;
}

int Yakusu(int kazu){
    
    int i = 0;
    int n = kazu;
    int count = 0;
    
    for(i=1;i<=n;i++){
        if(ここはご自分の力で){
            count = count + 1;
        }
    }
    
    return count;
}

こんな感じでどうでしょう?
あとはご自分で頑張ってくださいね。


No.15578

Re:1〜100までの約数の個数を・・・
投稿者---ニケ(2004/07/16 11:30:53)


>こんな感じでどうでしょう?
>あとはご自分で頑張ってくださいね。

ご丁寧にありがとうございます。
これを参考にさせていただいて頑張って作ってみます。
本当にありがとうございました。


No.15579

Re:1〜100までの約数の個数を・・・
投稿者---円零(2004/07/16 11:33:28)


>関数を使って入力(?)の意味がよくわかりませんが・・・

もしかして…
#include <stdio.h>

void input(int *measure){
    int i;
    for(i = 0; i < 10; i++){
        printf("%dの約数は何個ですか? ", i + 1);
        scanf("%d", &measure[i]);
    }
}

int main(void){
    int i, measure[100];
    input(measure);
    printf("***********************************\n");
    for(i = 0; i < 10; i++){
        printf("%dの約数の個数は%d個です。\n", i + 1, measure[i]);
    }
    printf("***********************************\n");
    return 0;
}

計算結果をユーザーが教えるという究極の自助努力型プログラム。


No.15580

Re:1〜100までの約数の個数を・・・
投稿者---円零(2004/07/16 11:36:10)


あ、テスト用に"10"にしたままだった。
与太レスなんでどうでもいいですけど。


No.15581

Re:1〜100までの約数の個数を・・・
投稿者---くらたっち(2004/07/16 11:40:15)


>計算結果をユーザーが教えるという究極の自助努力型プログラム。

笑っちゃいました^^



No.15597

Re:1〜100までの約数の個数を・・・
投稿者---RAPT(2004/07/16 22:49:01)


こんなんでも、仕様を満たしてると言えるかな?
標準入力の代わりに GetNextYakusu()関数を用いて標準出力に出力した。
# もちろん、約数の個数自体は別途コードを書いて計算させたものですが。

#include <stdio.h>

int GetNextYakusu()
{
  static int index = 0;
  static int yakusu[] = {
    1, 2, 2, 3, 2, 4, 2, 4, 3, 4,
    2, 6, 2, 4, 4, 5, 2, 6, 2, 6,
    4, 4, 2, 8, 3, 4, 4, 6, 2, 8,
    2, 6, 4, 4, 4, 9, 2, 4, 4, 8,
    2, 8, 2, 6, 6, 4, 2, 10, 3, 6,
    4, 6, 2, 8, 4, 8, 4, 4, 2, 12,
    2, 4, 6, 7, 4, 8, 2, 6, 4, 8,
    2, 12, 2, 4, 6, 6, 4, 8, 2, 10,
    5, 4, 2, 12, 4, 4, 4, 8, 2, 12,
    4, 6, 4, 4, 4, 12, 2, 6, 6, 9,
  };
  return yakusu[index++];
}

int main()
{
  int i;
  for(i = 0; i < 100; ++i){
    printf("%3d の約数の個数は %2d 個です。\n", i+1, GetNextYakusu());
  }
  return 0;
}



No.15620

Re:1〜100までの約数の個数を・・・
投稿者---ニケ(2004/07/17 16:03:27)


単純に約数の個数を求めるプログラムでも、ひらめき方次第では何通りもあるんですね。驚きました(^^;
無事に単位が取れるんだろうか・・・この教科w