キーボードから年、月、日を入力すると、その年の元旦から当日までの日数を表示するプログラムを作ってほしいです。ユリウス暦でOKです。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

前の方が書かれている通り何に配列を使うのか少々疑問ですが、


使うとすればこんな感じではないかと思います。

#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だと、つい、「宿題では?」と思います。
もし宿題なら自分で解かなければ意味が無いと思いので丸写しはしないで下さい。
って書いた本人がいっても説得力ありませんが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/08 10:50

よくみたら 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);
}
    • good
    • 0

何がどうわからないのか、御自分でやってみたところ、分からなかったところを書いた方がいいですよ。



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);
}

たぶん宿題の参考にはならないと思います。
    • good
    • 0

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


配列のドコが分からないのでしょうか?
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qプログラミング入門に最適な言語

プログラミング入門に最適な言語
最近プログラミングに興味をもって、プログラミングに挑戦しようと思ってます。

最終的にC++へ行くつもりですが、何の言語からはじめるのがいいでしょうか。
よろしくお願いします。

Aベストアンサー

議論百出だろうと思います。

「Cを身につけてからC++を学ぶべきである」
と言う人もいるでしょう。

私は、そうは思いません。
(Cをバイパスし)いきなりC++で構わないと思います。

プログラミングが全く未経験であれば、
やはりGUIで結果がグラフィカルに出た方が楽しいと思います。

有償になってしまいますが
MFCを搭載したVC++ Standerd以上をお勧めします。

また、別の方法として
多少回り道になりますが
C#という手もあります。

これなら無償のExpressでも十分にGUI制作が楽しめます。

まずは、プログラミングの楽しさ、醍醐味を味わってみてください。

入門書等についてですが
あなたが趣味でコツコツプログラミングをし、
出来たものを自分だけで使うのが目的なら
何でもいいです。

ただし、プログラムを公開する
(フリー、商用問わず)
また、ソースコード(一部でも)
(こういうサイトで質問の為に提示することを含む)
つもりがあるなら、

「きちんとした書籍」

で学ぶことをお勧めします。
「10日で・・・」
とかうたっている物の中には
「動けばいい!」
という姿勢で書かれたものが多く、
ソースコードが非常に読みにくいです。

読みやすいソースコードであれば
こういうサイトでも回答が付きやすいですが、
読みにくいソースコードは
分析に非常に時間がかかるので
回答がなかなかつきません。

また、読みやすいソースコードは
バージョンアップも簡単ですし、

一般に
(例外はありますが)
動作も早く、コンパクトです。

頑張ってください!!!

議論百出だろうと思います。

「Cを身につけてからC++を学ぶべきである」
と言う人もいるでしょう。

私は、そうは思いません。
(Cをバイパスし)いきなりC++で構わないと思います。

プログラミングが全く未経験であれば、
やはりGUIで結果がグラフィカルに出た方が楽しいと思います。

有償になってしまいますが
MFCを搭載したVC++ Standerd以上をお勧めします。

また、別の方法として
多少回り道になりますが
C#という手もあります。

これなら無償のExpressでも十分にGUI制作が楽しめま...続きを読む

Qキーボードの入力としてOSに渡すプログラム

キーボードの入力としてOSに渡すプログラムを作りたいんですが、どうすればいいでしょうか?

具体的には

メモ帳などに入力のカーソルを出してる状態で、
プログラムを起動するとプログラムであらかじめ指定しておいたキーが押されたものとしてメモ帳に入力されるようなプログラムなのですがどうやればいいでしょうか?

自動入力といった感じのものなのですが。

C言語でコンソールアプリあたりで作ろうと思っているのですが使用できる関数やアルゴリズムなど教えてください。

Aベストアンサー

> 環境はwindows7 64bit環境です。

SendInput関数を調べてください。

Qコンピュータープログラミング入門の本

コンピュータープログラミングを独学で学びたいと思ってます。
どのようなことがやりたいか一概にいえませんが、当面はHPを好き勝手に作れるようになったり、ある程度プログラミングが理解できるようになりたいと思ってます。
入門の本(解りやすく飽きさせない、ある程度網羅できる)
という本はないでしょうか??
お願いします。

Aベストアンサー

還暦まじかのじっちゃまです。
服飾デザイナでプログラマではありませんので参考程度に。

さて、数年前に「人もすなるHPとやらを我も」と思い立ちました。
まず、やったことは、HTMLとCSSとに関するW3Cの勧告の日本語訳のダウンロードと印刷。
脇に揃えた参考書は2冊です。

「プログラミング言語C第2版」(カーニハン&リッチー著)
「Web標準の教科書」(益子貴寛著)

HP作成の入門書は数あれど、所詮は、W3Cの勧告をあちこち抜粋したもの。
ですから、W3C勧告の入手をお勧めします。

「プログラミング言語C第2版」は、JavaScript の習得のためです。
同著の例文をJavaScriptで書けるようになれば、ほぼ、同言語の文法的なマスターは終了。
「プログラミング言語C第2版」は、かなり古いです。
だが、その例文の再現は、プログラミングの習得にもなり一石二鳥じゃないですかね。
かなり、プログラミングに関する基本的なことが学べますよ。

「Web標準の教科書」は、「XHTMLとCSSでサイトをつくる」上では大変に参考になりました。

なお、プログラミングの独学の成否は、入門書ではなくヘルプ文のみで壁を突破できるか否か。
還暦まじかのじっちゃまは、このように思いますよ。

還暦まじかのじっちゃまです。
服飾デザイナでプログラマではありませんので参考程度に。

さて、数年前に「人もすなるHPとやらを我も」と思い立ちました。
まず、やったことは、HTMLとCSSとに関するW3Cの勧告の日本語訳のダウンロードと印刷。
脇に揃えた参考書は2冊です。

「プログラミング言語C第2版」(カーニハン&リッチー著)
「Web標準の教科書」(益子貴寛著)

HP作成の入門書は数あれど、所詮は、W3Cの勧告をあちこち抜粋したもの。
ですから、W3C勧告の入手をお勧めします。

「プログ...続きを読む

QC#でキーボードの入力を自動で実行し繰り返すプログラム

タイトルの通りでC#でキーボードの入力を自動で実行し、繰り返すプログラムを作りたいんですが、キーボードの入力を自動で行うプログラムはどう記述すればよいのか分かる方教えて貰えないでしょうか?また、参考サイトなどがあれば教えてください。

ちなみに作りたいプログラムの内容は、
完成したプログラムのボタンを押すと、
F8 → 2秒停止 → Enter → 2秒停止 → Enter
と自動で実行されるみたいな感じです。

分かる方、お願いします。

Aベストアンサー

.Net Frameworkでは確かキーインベントの発生はサポートしていなかったと思うのでWindowsAPIを呼び出します.
くわしくは参考urlのサイトを見てください.

参考URL:http://www.yoshibaworks.com/ayacy/inasoft/autokeyb/chapter3.html

Qプログラミング入門

プログラミング入門
今、私はプログラミングの勉強をしたいなーと思っています。それでホント初心者でも一からできるソフトはないでしょうか?または詳しく乗っているサイトを教えてください<m(__)m>
できればJAVAかCがいいです

Aベストアンサー

こういうのって人それぞれだと思いますが^^;

とりあえず、私は

http://wisdom.sakura.ne.jp/

このサイトで育ちました。

これから始めると言うのであれば開発環境が整っている言語が楽だと思うので

フリーならば

eclipseでjava

http://www.javadrive.jp/eclipse3/

hsp

http://hsp.tv/

フリーじゃないならば

visual studioをつかってVBやc言語

もしくは#1さんがおっしゃられているようにVBAあたりでしょうか

QWinApiを使って、キーボード入力をプログラムのみによって擬似的に再

WinApiを使って、キーボード入力をプログラムのみによって擬似的に再現する方法を、どなたか教えていただけないでしょうか。
例えば、「メモ帳のウィンドウ上でクリックをすると特定の文字('a'など)が書かれる」「プログラムを実行するとキーボードが押されたときに発生する信号をコンピュータに送って、キーボードの'a'が押されたとコンピュータに錯覚させて、メモ帳に'a'を書かせる」などといったことがやりたいです。

Aベストアンサー

これはC#でいいのでしょうか?

実際に記述したコードがあるのであれば乗せていただくと回答もしやすいです。よろしくお願いします

Qデバイスドライバのプログラミングでおすすめの入門本

Deamon Toolのような仮想マウントソフトを作りたいと考えています。
そこで、いろいろ調べているとWindows Device Kit(WDK)を使ってプログラミングをする必要があることが分かりました。

実際、この種のプログラミング本は少ないようで、おすすめの入門者が読めそうな本があれば教えてください。
ちなみに、C/C++言語の知識はあります。

Aベストアンサー

Windows Driver Kitには、サンプルコードとドキュメントが含まれています。

通常のWindowsアプリケーションを作成できる技量がある技術者であれば、サンプルコードとドキュメントが入門書の代わりになります。

通常のWindowsアプリケーションを作成できる技量がないのであれば、たとえ入門書があっても、読んでて内容が理解できないでしょうし、サンプルコードとドキュメントを見ても意味不明でしょう。

そういう訳で「入門書が要らない」ので「入門書がない」のです。

まずは、Windows Driver Kitのインストールセットを入手し、インストールしましょう。

Q入力されたとき,何も入力しない,もしくは20字以上だと再入力のプログラム??

こんにちわ,
今Cの勉強をしているんですが,入力をして,何も入力しないもしくは20字以上だと再入力させるのプログラムを作りたいんですけどどうしたらよろしいでしょうか。
charsk[21];

start1:
while(stdin = "
puts("入力");
if ((*fgets(sk,sizeof(sk),stdin) < 0x21) || strlen(sk) >= 21 )
{
  puts("error");
  goto start1;
}
だと,20字以上のときにstdinのバッファに残ってしまってエラー表示が2度出ます。
ちなみにfflush(stdin)は使用できないANSI C規格です。
よろしくお願いします。

Aベストアンサー

#include <stdio.h>

main()
{
  char sk[21] ;
  int i ;

  i = -1 ;
  puts("入力");
  do {
    i ++ ;
    if ( i > 21 ){
      puts("\nerror\n入力");
      i = 0 ;
    }
    sk[i] = getch();
    printf("%c",sk[i]);
  } while ( sk[i] != 0x0D );
}
これだと21文字目を入れた時点でerrorを表示します。
ENTERを押した時点でerrorを表示して再入力させるのであれば、
#include <stdio.h>

main()
{
  char sk[21],c ;
  int i ;

  i = -1 ;
  puts("入力");
  do {
    i ++ ;
    if ( i < 21 ){
      c = sk[i] = getch();
    } else if ( c == 0x0D ){
      puts("\nerror\n入力");
      i = 0 ;
      c = sk[0] = getch();
    } else {
      c = getch();
    }
    printf("%c",c);
  } while ( !( c == 0x0D && i < 21 ) );
}
でいかがでしょうか。

#include <stdio.h>

main()
{
  char sk[21] ;
  int i ;

  i = -1 ;
  puts("入力");
  do {
    i ++ ;
    if ( i > 21 ){
      puts("\nerror\n入力");
      i = 0 ;
    }
    sk[i] = getch();
    printf("%c",sk[i]);
  } while ( sk[i] != 0x0D );
}
これだと21文字目を入れた時点でerrorを表示します。
ENTERを押した時点でerrorを表示して再入力させるのであれば、
#include <stdio.h>

main()
{
  char sk[21],c ;
  ...続きを読む

Qプログラミング入門者、言語の選択?

プログラミングは本当に初めてですが、言語の選択について質問させて下さい。
ある事がキッカケでプログラミングなる物を初めてみようと思ったのですが、
javaであったり、C+であったり・・・と色々な言語がある様で戸惑っています。
それぞれの言語を勉強するに当たり、必要な環境等は書店で売られている入門書で十分理解出来る(内容では無く用意するソフト等の事)のですが、入門の入門にでも該当するのでしょうか?どの言語が何に向いている(又は初心者向けor上級者向け等)と言った基礎の基礎って意外と無いものです。
家計簿ソフトの様な物(用途は違う)が出来たら最高なのですが、何(言語)から勉強したら良いのでしょう?
難易度の高低より、出来れば投資額が少なく、汎用性を重視したいのですが・・・
Windows CE等のPDAなんかでも稼働するソフトなら更に良いのですが・・・。
ps:難易度の高低より・・・以降の希望が無謀な事なのかどうかも分からない位ですが、
   初めて見ようと思った気持ちを大切に恥ずかしながら質問させて頂きます。よろしくお願いします。

Aベストアンサー

Excelはどうでしょう?

Excel???なんて思われるかもしれませんが、マクロ機能の中にVBAというBasicが搭載されています。これはMicrosoftの開発言語のVBとほぼ同じことができるものです。
Excelの上で動かせるのでExcelの機能も簡単にアクセスできますし、家計簿のようなものを作るのであれば簡単にできると思います(完成度の高いものを望むのであれば難しいですが)。

投資額についてはExcelならたいていのメーカー製パソコンには最初からインストールされているのでゼロに近いですよね。

WindowsCEで動かしたいのであれば...Microsoftはホームページ上でeMbeded Visual Toolsというのを無料でダウンロードできるようにしています。これを使えばVisual C++もしくはVisual Basicで開発をすることができます。この2つの選択肢からでしたらVisual Basicをお勧めしますが...PDAはその必要性があまりないのでしたら初めは考えない方が無難だと思います。

Qどんなプログラムになるのかわからないのでプログラムを作って頂けませんか

どんなプログラムになるのかわからないのでプログラムを作って頂けませんか?

3分間英単語タイプ練習プログラム作ってを5日以上にわけて計25回以上実行します。

1 単語ファイルword.txtを単語数未知として読み込むこと.3975単語含まれているが,単語数をプログラムに直接書き込むことや実行時に与えることは禁止.
2 単語は一様乱数を用いてランダムに呈示すること.プログラム完成後,プログラムの先頭に「srand((unsigned)time(NULL));」を付加しなさい.これにより,実行時刻によって乱数シードが変わるから,異なった単語(系列)が呈示されることになる.
3 各回の得点は「正答した単語の文字数の総和」とする.
4 毎回「月/日/年-時:分:秒,得点」を結果ファイルscore.csvに追加的に書き込む(追記モード)。秒と得点の間のカンマは半角にする必要があることを注意しておく.

Aベストアンサー

とりあえず使いそうな関数だけ書いておきます。あとは調べてください。

fgets, fseek

とりあえずこれだけで作れる・・・かな?word.txtの中身が分からないですが、一行につき一単語のみが書いてあると仮定するとfgetsをループすれば単語数は求められます。

単語をメモリに格納した方が速度は早くなるのでそのときはfgets, malloc, freeで作れるかと。

ポインタは分かっていますか?
ポインタ分かってないとちょっと厳しいかも・・・

がんばってください。


人気Q&Aランキング

おすすめ情報