OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

配列がよくわからない・・・。

  • すぐに回答を!
  • 質問No.164695
  • 閲覧数104
  • ありがとう数2
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 25% (1/4)

キーボードから年、月、日を入力すると、その年の元旦から当日までの日数を表示するプログラムを作ってほしいです。ユリウス暦でOKです。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル6

ベストアンサー率 50% (6/12)

前の方が書かれている通り何に配列を使うのか少々疑問ですが、
使うとすればこんな感じではないかと思います。

#include <stdio.h>

int main()
{
int y, m, d, cnt, out;
int days[13] = {-1,31,28,31,30,31,30,31,31,30,31,30,31};
// -1はダミー
out = 0;

printf("年月日を入力せよ.(年は西暦)\n");
scanf("%d%d%d", &y, &m, &d);

if(y%4==0) days[2] = days[2] + 1; // 閏年なら2月の日数を+1

for(cnt=1; cnt<m; cnt++)
out = out + days[cnt];
out = out + d;

printf("元旦から%d日たっています.\n", out);
return 0;
}

配列の一番目の要素は、第0要素なので、
(1-12の)月と対応させるために使いません。
配列の宣言は第0要素を含めた13になっています。
入力された月の前の月までを、
配列を使うことでカンタンに足しています。

たぶんkanaboomさんはCをはじめたばかりだと思うので(自分もヒトの事言えませんが)、
出来る限りわかりやすく(換言すると回りくどく)書いたつもりです。
それから、ユリウス暦でもグレゴリオ暦でもそんなに変わりません。

このテの質問で困り度が3だと、つい、「宿題では?」と思います。
もし宿題なら自分で解かなければ意味が無いと思いので丸写しはしないで下さい。
って書いた本人がいっても説得力ありませんが。
お礼コメント
kanaboom

お礼率 25% (1/4)

ありがとうございます。お察しのとおり、宿題です。
初心者なもので、どんなふうにプログラムを組み立てていけばいいのか
さっぱりわからないのに、こんな宿題を出されて困っておりました。
ご指摘のように、あなたの回答を参考に自分で書いてみたいと思います。
がんばります。
投稿日時 - 2001-11-08 10:50:28
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル13

ベストアンサー率 18% (351/1917)

ドコを配列にしたら良いのでしょうか? 配列のドコが分からないのでしょうか?
ドコを配列にしたら良いのでしょうか?
配列のドコが分からないのでしょうか?


  • 回答No.3
レベル13

ベストアンサー率 39% (632/1595)

何がどうわからないのか、御自分でやってみたところ、分からなかったところを書いた方がいいですよ。 Visual C++/MFCで書いてみました。(1分で) void CAaa::func1(int year, int month, int day) {   CTime*pt1, *pt2;   pt1 = new CTime(year, month, day, 0, 0, 0);   p ...続きを読む
何がどうわからないのか、御自分でやってみたところ、分からなかったところを書いた方がいいですよ。

Visual C++/MFCで書いてみました。(1分で)

void CAaa::func1(int year, int month, int day)
{
  CTime*pt1, *pt2;
  pt1 = new CTime(year, month, day, 0, 0, 0);
  pt2 = new CTime(year, 1, 1, 0, 0, 0);
  CTimeSpan ts1(pt1->GetTime());
  CTimeSpan ts2(pt2->GetTime());
  CTimeSpan diff = ts1 - ts2;
  delete pt1;
  delete pt2;
  CString kotae;
  kotae.Format("%d", diff.GetDays());
  AfxMessageBox(kotae);
}

たぶん宿題の参考にはならないと思います。
  • 回答No.4
レベル13

ベストアンサー率 39% (632/1595)

よくみたら new しなくてもよかったですね。失礼しました。 void CAaaDlg::func1(int year, int month, int day) { CTimect1(year, month, day, 0, 0, 0); CTimect2(year, 1, 1, 0, 0, 0); CTimeSpants1(ct1.GetTime()); CTimeSpants2(ct2 ...続きを読む
よくみたら new しなくてもよかったですね。失礼しました。

void CAaaDlg::func1(int year, int month, int day)
{
CTimect1(year, month, day, 0, 0, 0);
CTimect2(year, 1, 1, 0, 0, 0);
CTimeSpants1(ct1.GetTime());
CTimeSpants2(ct2.GetTime());
CTimeSpandiff = ts1 - ts2;
CStringkotae;
kotae.Format("%d", diff.GetDays());
AfxMessageBox(kotae);
}
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ