レポート課題です。(提出期限切れなのであせってます。)

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

レポート課題です。(提出期限切れなのであせってます。)

#1

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

昨日の質問と同じですみません。
みなさんからアドバイスをもらったのですが関数を利用してソースCodeの書き方が全くわかりません。
締め切りもすぎてあっせています。
みなさんの力をかしてもらえないでしょうか?
お願いします。

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

}

beatle
記事: 1281
登録日時: 12年前
住所: 埼玉
連絡を取る:

Re: レポート課題です。(提出期限切れなのであせってます。)

#2

投稿記事 by beatle » 11年前

ソースコードはまず置いておいて、10^n日後が何曜日かの求め方を考えます。
0日後は日曜日
1日後は月曜日
2日後は火曜日
...
7日後は日曜日
8日後は月曜日
9日後は火曜日
...
14日後は日曜日
15日後は月曜日
16日後は火曜日
...
となりますね。では、X日後は何曜日でしょうか?
答えは X % 7 曜日です。(「Xを7で割った余り」曜日。ただし、0は日曜日、1は月曜日、2は火曜日、...)
ためしに
X = 14, 15, 16
を入れてみると
X % 7 = 0, 1, 2
となって、今日から14日後、15日後、16日後は確かに日曜日、月曜日、火曜日となることがわかります。

さて、これをどうやってプログラムで表すか。
nを0以上の整数として、10^n日後を計算するのはpower関数。
後はそのpower関数の結果をXとして、X % 7を計算すればいいだけです。
曜日 = power(10, n) % 7

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#3

投稿記事 by non » 11年前

boxさんからヒントをもらったのに何も変わってないですね。

それは、そうとして
何で「10のn乗後の曜日を計算する」課題なんでしょうね。先生の出した真意がわかりません。
単純に計算すると、nが大きくなるとオーバーフローするから、方法を考えろということなのでしょうか。
だとすると、boxさんのようにすべきだと思いますが、ちょっと考察。

10^n は (7+3)^n と変形できます。
展開すれば 一番最後の項に 3^n が出ます。他の項はすべて7の倍数です。
ですから 10^nを計算しなくても 3^nを計算すればよいですね。
それでもオーバーフローするかも知れないなら、答えを7で割った余りにしていくことです。
例えば、 

コード:

int main(void)
{
	int i;
	int n;
	int youbi=1;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		youbi = youbi * 3 % 7;
	printf("%d\n",youbi);
	return (0);
}
non

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#4

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

ありがとうございます。
自分でやり直してみた結果ここまではできたのですがエラーまみれで修正場所などをアドバイスお願いします。

#include<stdio.h>

int power(int dx,int no)
{
int i;
double tmp = 1.0;

for(i=1;i<=no;i++)
tmp*=dx;
return(tmp);

}



int main(void)
{

int n,y;
printf("今日は、日曜日です。\n");
printf("10の何乗日後の曜日が知りたいですか?:");
scanf("%d",&n);

if(tmp%7=0)
y=日;
else if(tmp%7=1)
y=月;
else if(tmp%7=2)
y=火;
else if(tmp%7=3)
y=水;
else if(tmp%7=4)
y=木;
else if(tmp%7=5)
y=金;
else if(tmp%7=6)
y=土;
else
y=日;

printf("10の%d乗日後の曜日は%d曜日です。\n",n,y);
return 0;

}

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#5

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

nonさんへ

一様課題文章をコピーしてきました。

10^n 日後が何曜日であるのかを計算するプログラムを作り,動作を検証した上でレポートにまとめよ.講義中の例では条件判定で解決したが,配列を用いれば極めてシンプルに書くことができる.興味のあるものは配列について自習し実装してみてほしい.

あとは配列もやれという意味なんですが、、、

nil
記事: 428
登録日時: 12年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#6

投稿記事 by nil » 11年前

>コジコジさん
文字列については理解なさっていますか?
また、配列を用いて書く、とのことですが、コジコジさんは配列についてどの程度の知識を持ってらっしゃるのでしょうか?

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#7

投稿記事 by non » 11年前

配列ね。
char youbi[]={"日","月","火","水","木","金","土"};

こう宣言して使えってことでしょうね。

間違えました。
char youbi[][3]={"日","月","火","水","木","金","土"};
non

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#8

投稿記事 by non » 11年前

コジコジ さんが書きました:配列を用いれば極めてシンプルに書くことができる.興味のあるものは配列について自習し実装してみてほしい.
習ってないのだから、配列を使わなくても良いのでしょう。
出力だけして、

コード:

if(tmp%7==0)
	puts("日");
で、いいのでは?
non

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#9

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

できましたがif分の中身のtmpのところにエラーがでますなぜなんでしょうか?

#include<stdio.h>

int power(int dx,int no)
{
int i;
double tmp = 1.0;

for(i=1;i<=no;i++)
tmp*=dx;
return(tmp);

}



int main(void)
{

int n,y;
printf("今日は、日曜日です。\n");
printf("10の何乗日後の曜日が知りたいですか?:");
scanf("%d",&n);

if(tmp%7=0)
puts("日");
else if(tmp%7=1)
puts("月");
else if(tmp%7=2)
puts("火");
else if(tmp%7=3)
puts("水");
else if(tmp%7=4)
puts("木");
else if(tmp%7=5)
puts("金");
else if(tmp%7=6)
puts("土");
else
puts("日");

printf("10の%d乗日後の曜日は%d曜日です。\n",n,y);
return 0;

}

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: レポート課題です。(提出期限切れなのであせってます。)

#10

投稿記事 by ISLe » 11年前

「講義中の例では条件判定で『解決した』」って書いてありますね。
プログラムを作ってないだけで、ソースコードは教えてもらっているのでは。

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#11

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

ISLe さん

この講義はc言語の授業でないのですがこれをかりにc言語でやってみたらという話のなかでやっただけでCodeもやっていません。
if文の使い方のみやっただけでコピーなどはしていません。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: レポート課題です。(提出期限切れなのであせってます。)

#12

投稿記事 by YuO » 11年前

  • 等しいことを比較するには, == 演算子をつかう
  • 冪剰余なので,かけて剰余をとる,を繰り返す
あたりでしょうか。

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#13

投稿記事 by non » 11年前

エラーが出たら、そのエラーを載せてください。

恐らく、返値の型が違っているのでは?

ところで、関数は呼び出さなきゃ使えないですよ。
でも、配列を習っていないのに、関数はもう習っているのですか?
non

アバター
usao
記事: 1887
登録日時: 11年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#14

投稿記事 by usao » 11年前

main()関数内で宣言されている変数は n,y のみであり,tmpなる変数は存在していないので,
使用しようとしたらエラーとなるわけですが…
とりあえず,最初のifに来た段階でtmpにはどんな値が入っていることを期待されているのでしょうか?

#Cの講義じゃないのに 関数を使って書け というレポートを出してくる!?
 いったい何の講義なのだろうか?
 (少なくともCの構文とかそういう類の知識を持ち合わせている前提での講義なんだろうなとは思いますが.
  普通にCの講義が他に存在するとか.)

ISLe
記事: 2650
登録日時: 13年前
連絡を取る:

Re: レポート課題です。(提出期限切れなのであせってます。)

#15

投稿記事 by ISLe » 11年前

「講義中の例では条件判定で『解決した』」って書いてありますね。
プログラムを作ってないだけで、プログラムの仕様は教えてもらっているのでは。

回答者の皆さんが曜日の求め方を一生懸命説明してくださったわけですが、既に講義で教えてもらっているわけですよね。
日本語で。

講義で教えてもらった求め方とは関係なくプログラムを作ったら、そのプログラムの動作検証のレポートって意味があるんですかね。
たまたま合致することがあるかもしれないですが、コードを書くだけがプログラミングじゃないと思いますけど。

プログラムの設計に関する講義なんてことはないことを祈ります。

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#16

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

この授業はプログラミングにあまり関係ない授業です。
別でC言語の授業があるのですが僕は1年留年していて去年c言語の講義を理解していないまま単位を取得してしまったので今年はc言語の授業がない状態です。

エラーですが
mac book でX code を使っています。

Use of undeclared identifier 'tmp'

と表示されています。

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

Re: レポート課題です。(提出期限切れなのであせってます。)

#17

投稿記事 by box » 11年前

コジコジ さんが書きました: Use of undeclared identifier 'tmp'
変数tmpの存在範囲は、power関数の中「だけ」です。
main関数からは、変数tmpの存在は見えません。

tmpを関数の外側で定義すれば、解決するかもしれません。
あまり美しくないように思いますが…。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#18

投稿記事 by non » 11年前

[quote="コジコジ"]Use of undeclared identifier 'tmp'
quote]

日本語に訳すと
未定義の識別子tempが使われています。
non

アバター
usao
記事: 1887
登録日時: 11年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#19

投稿記事 by usao » 11年前

エラー内容はそのまんまですね.
「宣言していない識別子tmpの使用」

>講義で教えてもらった求め方とは関係なくプログラムを作ったら、そのプログラムの動作検証のレポートって意味があるんですかね。
>たまたま合致することがあるかもしれないですが、コードを書くだけがプログラミングじゃないと思いますけど。
たしかに,「レポート内容として求められている事柄が何なのか」によって
どうすれば良いのか?が変わってきそうな気もしますね.
「動作を検証してレポート化」って言われても何すればいいんだろう?
(数パターンの入力に対して答えがあってるか見る? 紙1枚のレポートになりそうw)

>理解していないまま単位を取得してしまった
プログラムのレポートが当たり前に出てくるような学科だったら
他の講義ならまだしも(!?),いちばんやっちゃいけないパターンな気がしますねw
とは言え,今出されている課題の程度から察するに
1日30分とか1時間とか のペースでもいいから自習すれば
1週間くらいでも取り戻せそうな程度だと思いますので,
今のうちに ちゃんと理解することに努めることをお勧めします.
(学生時代,そのまま放置して卒研あたりでどうにもならなくて死亡する例をそれなりに見てきたので)

コジコジ

Re: レポート課題です。(提出期限切れなのであせってます。)

#20

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

みなさん親切にありがとうございました。

毎日自習するようにして取り戻します。
またなにかあればよろしくお願いします。

non
記事: 1097
登録日時: 13年前

Re: レポート課題です。(提出期限切れなのであせってます。)

#21

投稿記事 by non » 11年前

できたんですか?
どんな、レポートを書いたか見てみたい。
ついでに、なんという教科名かも知りたい。
non

閉鎖

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