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

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

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

#1

投稿記事 by コジコジ » 13年前

今日を日曜日として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;

}


box
記事: 2002
登録日時: 15年前

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

#2

投稿記事 by box » 13年前

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言語について協力お願いします。

#3

投稿記事 by コジコジ » 13年前

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

フォーラムルールで名前の統一を義務とさせていただいていますので「コジコジ」さんに統一させてもらいました。
その他ソースコードでの回答は基本的にはできません。ご理解ください。 http://dixq.net/board/board.html
コードを書いてもらえば、問題点をアドバイスできると思いますのでお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

コジコジ

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

#5

投稿記事 by コジコジ » 13年前

ルールに違反あり申し訳ありませんでした。
提出が今日の24時なもんで自分で回答を参考にしてリトライしてみます。

閉鎖

“C言語何でも質問掲示板” へ戻る