ページ 11

c言語について協力お願いします。

Posted: 2013年5月22日(水) 19:37
by コジコジ
今日を日曜日としてnを入力するようにして
10のn乗後の曜日を計算するプログラムを作りたいのですが、わかりません。
設問は関数を使って書けと指示あります。
自分で何となくは作ったのですがここからわかりません。
回答よろしくお願いします。

コード:


#include<stdio.h>

int power(int dx,int no)
{
    int i;
    int tmp=1;
    
    for(i=1;i<=no;i++)
        tmp*=dx;
    return(tmp);

}



int main(void)
{

    int n;
    printf("今日は、日曜日です。\n");
    printf("10の何乗後の曜日が知りたいですか?:");
    scanf("%d",&n);
    if(tmp%7=0)
        n=1;
    printf("10の%d乗日後の曜日は曜日です。\n",n);
    printf("明日は、%dです。\n",power(10,2));
    return 0;

}


Re: c言語について協力お願いします。

Posted: 2013年5月22日(水) 20:35
by box
kojikoji さんが書きました:今日を日曜日としてnを入力するようにして
10のn乗後の曜日を計算するプログラムを作りたいのですが、わかりません。
設問は関数を使って書けと指示あります。
10^nを律儀に求める必要はないと思います。
nが0以上の整数だとして、
10^0 % 7 = 0 ... 1(つまり月曜日)
10^1 % 7 = 1 ... 3(つまり水曜日)
10^2 % 7 = 14 ... 2(つまり火曜日)
10^3 % 7 = 142 ... 6(つまり土曜日)
10^4 % 7 = 1428 ... 4(つまり木曜日)
10^5 % 7 = 14285 ... 5(つまり金曜日)
であり、以降、nが増えるに従い、あまりは1, 3, 2, 6, 4, 5をくり返していきます。
つまり、10^nを計算しなくても、nがいくつであるかさえわかれば、
10^n日後の曜日がわかります。
関数を使って書くのであれば、nを6で割ったあまりが0~5のいずれになるかによって、
1, 3, 2, 6, 4, 5のいずれかを返すようにすればいいと思います。

Re: c言語について協力お願いします。

Posted: 2013年5月22日(水) 21:02
by コジコジ
早速丁寧な回答ありがとうございます。
言ってることは理解できましたが、具体的に関数を使ったソースコードも教えてもらえませんか?
初心者なもんでなかなかエラーばかりでコンパイルできないもので。
回答お願いします。

Re: c言語について協力お願いします。

Posted: 2013年5月22日(水) 21:18
by softya(ソフト屋)
フォーラムルールで名前の統一を義務とさせていただいていますので「コジコジ」さんに統一させてもらいました。
その他ソースコードでの回答は基本的にはできません。ご理解ください。 http://dixq.net/board/board.html
コードを書いてもらえば、問題点をアドバイスできると思いますのでお願いします。

Re: c言語について協力お願いします。

Posted: 2013年5月22日(水) 21:34
by コジコジ
ルールに違反あり申し訳ありませんでした。
提出が今日の24時なもんで自分で回答を参考にしてリトライしてみます。