構造体 引数

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sim
記事: 48
登録日時: 5年前

構造体 引数

#1

投稿記事 by sim » 4年前

引数で指定された2つの日付の経過日数を返す。 次のように宣言される関数を作成。
struct date datediff(struct date val1, struct date val2);

コード:

=struct date
{
	int year;
	int month;
	int day;
};

int uru(int year)
{
	if (((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0))

		return 1;
	return 0;
}

int sum(date *val)
{
	int d[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31,0 };
	int i, u, m, y;

	y = val->year;
	m = val->month;
	u = val->day;
	for (i = 0; i<m; ++i)
	{
		u += d[i];

		if (i == 2)
		{
			u += uru(y);
		}
	}
	return u;
}

int datediff(struct date *val1, struct date *val2)
{
	int i, k, y1, y2;

	y1 = val1->year;
	y2 = val2->year;
	k = 0;

	for (i = y2; i<y1; ++i)
	{
		k += 365;
		k += uru(i);
	}
	k = k + sum(val1) - sum(val2);

	return k;
}

int main()
{
	int k;

	date t[2] = { { 2015,6,3 },{ 2010,5,2 } };
	k = datediff(&t[0], &t[1]);
	printf("%d日経過しました。\n", k);

	return 0;
}
結果エラーになります。
またプログラムはあっていますか?

Rittai_3D
記事: 525
登録日時: 7年前

Re: 構造体 引数

#2

投稿記事 by Rittai_3D » 4年前

エラーメッセージが書いていないので、どんなエラーか分かりません。
とりあえず、インクルード文の追加と余計な文字を削除してwandboxで実行したところ、コンパイルが通り、エラーが出ませんでした。

実行結果→http://melpon.org/wandbox/permlink/fDqBe3151YfK7MIC

プログラムがあっているかどうかは、実験していないので分かりません。
初心者です

アバター
みけCAT
記事: 6273
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 構造体 引数

#3

投稿記事 by みけCAT » 4年前

sim さんが書きました:引数で指定された2つの日付の経過日数を返す。 次のように宣言される関数を作成。
struct date datediff(struct date val1, struct date val2);
最近投稿された類似の質問を発見しました。
プログラムがわかりません。struct date { int year; int month; int ... - Yahoo!知恵袋 (アーカイブ)
プログラムがわかりません。struct date{int year;int month;int da... - Yahoo!知恵袋 (アーカイブ)

これらの質問の質問者(stalemate_0920さん)は、
前にもsimさんの質問と似た質問を何度も投稿しています。
この掲示板でマルチポストをする場合は、相互リンクが必要です。

sim さんが書きました:結果エラーになります。
先頭の=を削除し、代わりに#include <cstdio>と書いたところ、C++としてコンパイルが通りました。
sim さんが書きました:またプログラムはあっていますか?
詳しくは見ていませんが、とりあえず提示されたケースの出力は正しそうです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

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