• 締切済み

C言語のポインタのプログラムの作成依頼です

西暦年と月を入力し、その月の最初の日(一日)の曜日を表す番号(日曜なら0、月曜なら1.......、土曜日なら6という整数)で返す関数 int calc_youbi(int y,int m)とする。また、1か月の日数をdaynumとして、その月の最初の日(1日)の曜日を*youbiとして受け取り、一か月分のカレンダーを出力するとともに、翌月の1日の曜日を*youbiとして受け渡す関数を、void print_calendar(int daynum,int *youbi)とする。  西暦年と月の情報を入力して、最初に calc_youbiを一回、その後にprint_calendarを二回使うことによって二か月分のカレンダーを出力するプログラムを教えてください。 以下は、実行例です。 enter year:2010 enter month:6 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

みんなの回答

  • akauntook
  • ベストアンサー率19% (295/1481)
回答No.2

依頼? 見積もり出せば良いですか? ここでは受注出来ないと思うので、他のところでご依頼あれば対応致します。

  • mpascal
  • ベストアンサー率21% (1136/5195)
回答No.1

宿題なら自力でやりましょう。

関連するQ&A

  • カレンダーの作り方

    PHPで簡単なカレンダーを作成しようと思っています。やりたいことは下のようなカレンダーを作成したいです。forループで表自体は作れるのですが、最後の行に何もデータ(日付)が入っていない場合は最後の行は表示しないという処理にしたいです。この場合、31より後ろの4つのセルはあっても問題ありません。あくまで、最後の行が空の場合は最後の行は表示しない、もしくは表示させないという処理です。 これだとforループで表を作るには難しいような気がしますが、何かよいアイディアをご教授ください。 ┏━━━━━━━━━━━━━┓ ┃********2006年10月********┃ ┣━┳━┳━┳━┳━┳━┳━┫ ┃Su┃Mo┃Tu┃We┃Th┃Fr┃Sa┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃01┃02┃03┃04┃05┃06┃07┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃08┃09┃10┃11┃12┃13┃14┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃15┃16┃17┃18┃19┃20┃21┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃22┃23┃24┃25┃26┃27┃28┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃29┃30┃31┃--┃--┃--┃--┃ ┣━╋━╋━╋━╋━╋━╋━┫ ┃--┃--┃--┃--┃--┃--┃--┃ ┗━┻━┻━┻━┻━┻━┻━┛

    • ベストアンサー
    • PHP
  • C言語で分からないところがあるのですが……

    C言語で分からないところがあるのですが…… すみません。C言語を学習していてつまづいたので、皆さんの意見を聞きたいと思います。 現在、カレンダーを表示するプログラムをつくっています。 Yearとmonthをユーザが入力すると、その年その月のカレンダーが出るという算段です。(画像貼っておきます。ソースコードは下) これはできました。 これをいじって、Yearをユーザから受け取ると、その年の1月から12月までのカレンダーがば~っと表示されるようにしろ、と言われました。 Yearとmonthを受け取って書くやつは友人の助けを得ながらなんとかかけましたが、もう無理です。多分、for文を使うんだと思うんですが……助けてください! #include <stdio.h> int dayofweek(int year, int month); int daysinmonth(int year, int month); int daysinyear(int year); void showcal(int dow, int days); int main(void) { int year, month; int dow; int dim; printf ("Year?: "); scanf ("%d", &year); printf ("Month?: "); scanf ("%d", &month); dow = dayofweek(year, month); dim = daysinmonth(year, month); showcal(dow, dim); return 0; } void showcal (int dow, int days) { int i, j, d; printf ("Su Mo Tu We Th Fr Sa\n"); d = 1; for (i = 0; i < dow; i++) { printf (" "); } for (; i < 7; i++) { printf (" %d ", d); d++; } printf("\n"); for (j = 0; d <= days; j++) { for (i = 0; i < 7 && d <= days; i++) { if (d < 10) printf (" %d ", d); else printf ("%d ", d); d++; } printf("\n"); } } int daysinmonth( int year, int month) { int dim; dim = 31; if (month == 4 || month == 6 || month == 9 || month == 11) dim = 30; if (month == 2) { if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0) dim = 29; else dim = 28; } return dim; } int daysinyear( int year) { int diy; if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0) diy = 366; else diy = 365; return diy; } int dayofweek (int year, int month) { int dow; int days; int y, m; if (year >= 2000) { days = 0; for ( y = 2000; y < year; y++ ) { days = days + daysinyear(y); } for ( m = 1; m < month; m++ ) { days = days + daysinmonth(year, m); } dow = (6 + days) % 7; } else { days = 0; for ( m = month; m <= 12; m++ ) { days = days + daysinmo

  • C#でカレンダーを作っているのですがここから先がわかりません。どなたかおしえてもらえませんか?

    using System; using System.Collections.Generic; using System.Text; namespace 万年カレンダー { class MyEventCiass { static void Main(string[] args) { int nen, tuki,tukinohi,youbi;    //西暦の入力 System.Console.Out.WriteLine("西暦を入力してください。"); nen = int.Parse(Console.ReadLine()); //月の入力 System.Console.Out.WriteLine("月を入力してください。"); tuki = int.Parse(Console.ReadLine()); //西暦と月の出力 Console.WriteLine(nen + "年" + tuki + "月"); switch (tuki) { case 2: if (nen % 4 == 0 && (nen % 100 != 0 || nen % 400 == 0)) tukinohi = 29; else tukinohi = 28; break; case 4: case 6: case 9: case 11: tukinohi = 30; break; default: tukinohi = 31; break; } if (tuki == 1 || tuki == 2) { nen = nen -1 ; tuki = tuki + 12; } //曜日の出力 Console.WriteLine("日 月 火 水 木 金 土"); youbi = (nen + nen / 4 - nen / 100 + nen / 400 + (13 * tuki + 8) / 5 + 1) % 7; if (youbi == 0) youbi = 7; for (int i = 1; i <= youbi ;i += 1 ) { Console.Write(i.ToString()); } for (int i = 4; i <= tukinohi; i += 1) { Console.Write(i.ToString()); } Console.ReadLine(); } } }

  • C# プログラム

    下記のプログラムを組んだのですが,for Dが1回しかまわりません. int[] Mo = new int[12]; #region Month ///<summary> ///月の定義 ///<summary/> Mo[0] = 4; Mo[1] = 5; Mo[2] = 6; Mo[3] = 7; Mo[4] = 8; Mo[5] = 9; Mo[6] = 10; Mo[7] = 11; Mo[8] = 12; Mo[9] = 1; Mo[10] = 2; Mo[11] = 3; #endregion int hh = f1.Ye; int ic = 0; for (int D = 0; D <= 11; D++) { int hye = hh; MessageBox.Show(D.ToString()); if (Mo[D] < 4) { hye = hh + 1; } int hmo = Mo[D]; // 2004年02月の日数を取得する int iDaysInMonth = DateTime.DaysInMonth(hye,hmo); //日数を積算 ic=ic + 31; int Sic = 31*D + 1; int Dic = 0; for (int N = Sic; N <= ic; N++) { Dic = Dic + 1; //必要な変数を宣言する DateTime dateValue = new DateTime(hye, hmo, Dic); // 曜日を取得する DayOfWeek uWeekday = dateValue.DayOfWeek; string W = ("日月火水木金土").Substring(int.Parse(dateValue.DayOfWeek.ToString("d")), 1); //MessageBox.Show(W.ToString()); string NI = Convert.ToString(Dic); if (Dic > iDaysInMonth) { NI = ""; W = ""; } //Labelに文字を入力。 string h = "label" + N; string hY = "label" + (N + 372); //MessageBox.Show(hY.ToString()); //日数を記入 Control[] cs = this.Controls.Find(h, true); ((Label)cs[0]).Text = NI; //曜日の記入 Control[] css = this.Controls.Find(hY, true); ((Label)css[0]).Text = W; } } いろいろ調べて //必要な変数を宣言する DateTime dateValue = new DateTime(hye, hmo, Dic); こいつが何らかの影響を及ぼしていることまではつかんだのですが,何が悪いのか,また, どうすれば改善できるのか解らず困っています. ご教授よろしくお願いいたします.

  • 万年カレンダーのプログラム(C言語)が分からなくて困っています。

    万年カレンダーのプログラム(C言語)が分からなくて困っています。 一応作ってみたけどダメだったので何処がおかしいか指摘してくれると幸いです あとC言語についてはかなり初心者ですすみません #include <stdio.h> int main(void) { int d[13]={ 31 ,28 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31 }; char youbi[7][4]={"日","月","火","水","木","金","土"}; int y ,m ,n ,a ,b ,c ,cc ,s ,ss ,e; printf("西暦 月 日を入力"); scanf("%d ""%d ""%d ",y,m,n); for(a = 1900 ; a < y ; a++){ if(a % 4 == 0){ if(a % 400 == 0){ s = s+2; } else{ s = s+1; } } if(a % 100 == 0){ s = s+1; } else{ s = s+2; } } if(y % 4 == 0){ if(y % 400 == 0){ ss = ss+2; } else{ ss = ss+1; } } if(y % 100 == 0){ ss = ss+1; } else{ ss = ss+2; } if(ss == 2){ d[1] = 29; } else{ d[1] = 28; } for(b = 0 ; b < m+2 ; b++){ e = d[m] + e; m = m+1; } e = e+n; c = e%7; s = c+s; cc = s%7; printf("%c",youbi[cc]); return 0; }

  • カレンダーのC言語プログラムを教えてください!

    西暦年と月を入力すると、その年月のカレンダーが出てくる万年カレンダーのC言語プログラムを教えてください! その出力結果が 2***年 *月 月 火 水 木 金 土 日 月 火 水 木 金 土 日 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 というように二週間ごとに表示するもので、 うるう年の判別ができるものになるようにしたいのですが。 年=n月=g で入力するものを作りたいんです。 よろしくお願いします!!!(>_<)

  • カレンダー作成

    C言語初心者です。 西暦と月を入力してその月のカレンダーを作成するプログラムの問題なのですが #include <stdio.h> #define MMAX 12 #define COMP (year - 1) int main(void) {  int i, j, year, month, day, youbi, ycnt, mcnt = 0;  int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  printf("西暦と月を入力して下さい-->");  scanf("%4d%2d, &year, &month");  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)   mday[1] = 29;  for (i = 0; i < [A]; i++) {   mcnt += mday[i];  }  mcnt++;  [B] = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;  printf("\n%4d 年%2d 月\n", year, month);  printf("----------------------------\n");  printf(" 日 月 火 水 木 金 土\n");  for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {   printf(" ");  }  for (day =1; day <= mday[month - 1]; day++) {   if ([C])    printf("[%2d]", day);   else    printf(" %2d ", day);   ycnt++;   if ([D]) {    printf("\n");    ycnt = 0;   }  }  return (0); } [A]、[B]、[C]、[D]に答えを入れなきゃいけないのですが私が考えた答えだと カレンダーの表示すらされません。どこがいけないのでしょうか? #include <stdio.h> #define MMAX 12 #define COMP (year - 1) int main(void) {  int i, j, year, month, day, youbi, ycnt, mcnt = 0;  int mday[MMAX] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  printf("西暦と月を入力して下さい-->");  scanf("%4d%2d, &year, &month");  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)   mday[1] = 29;  for (i = 0; i < month; i++) {   mcnt += mday[i];  }  mcnt++;  youbi = ((COMP + COMP / 4 - COMP / 100 + COMP / 400) + mcnt) % 7;  printf("\n%4d 年%2d 月\n", year, month);  printf("----------------------------\n");  printf(" 日 月 火 水 木 金 土\n");  for (j = 0, ycnt = 0; j < youbi; j++, ycnt++) {   printf(" ");  }  for (day =1; day <= mday[month - 1]; day++) {   if (youbi = 0)    printf("[%2d]", day);   else    printf(" %2d ", day);   ycnt++;   if (youbi > 7) {    printf("\n");    ycnt = 0;   }  }  return (0); } よろしくお願いします。

  • C言語でうまく組めません。

    恐れ入ります。C言語の勉強を今している者です。 ひとつ大きな難問に出会ってしまい困っています。ご教授ください。 カレンダーの問題です。 西暦で4桁 一ヶ月を42コマ用意します。 そして日曜日からはじまり月曜日で終わります。 たとえば2009年で考えますと(3ヶ月分のデータです) 2009 000000000102030405060708091011121314151617181920212223242526272829303100000000000000 010203040506070809101112131415161718192021222324252627280000000000000000000000000000 010203040506070809101112131415161718192021222324252627282930310000000000000000000000 2文字づつ拾って"00"の時はスペースを入れ、カレンダーを作成するプログラムを作成しようとしています。 DOS画面で表示される時は 2009年カレンダー 1月 2月 3月 4月 6月 7月 8月 9月 10月 11月 12月 13月 のようにしたいのですがうまくいきません。 どなたかご教授ください。4月以降のデータもご指示いただければすぐにご用意いたします。

  • C言語初心者です。

    C言語初心者の者です・・。カレンダーを表示するというプログラムを 作成して下さい。という問題でソースが途中まで出来ていてこれを元に 作成するみたいなのですが、今まで、こちらのサイトで同じような質問は無いかなぁと検索してみたのですが、年数やうるう年の計算もされていて、どこをどの様に変えれば良いのかも分かりません。どなたか教えて頂けないでしょうか? 〖問題〗 以下のように、カレンダーを表示するプログラムを書いてください。 int main (void) { /* 1月表示 */ dispCalender(1); return 0; } void dispCalender(int month) { /* 2007年:月毎の最終日を管理する配列 */ int lastday[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30,31}; /* 2007年:各月が何曜日から始まるか管理する配列 */ int week[12] = {1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6} /* ※0:日、1:月、2:火 ・・・ 6:土 */ (ここにいっぱいコード書く) } (実行結果) --------------------- [2007年1月] --------------------- 日 月 火 水 木 金 土 --------------------- 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ---------------------

  • 万年カレンダー

    万年カレンダー作ろうとしているのですが、ここからの作り方がわかりませんので、教えてください。 int youbi_chk(int,int,int); int uru_chk(int); void main(void) { int yy,mm; char week[7][4]={\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"}; int mday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; printf(\"年(西暦:4桁)を入力して下さい:\"); scanf(\"%d\",&yy); printf(\"月を入力して下さい:\"); scanf(\"%d\",&mm);