課題ができません
Posted: 2007年1月29日(月) 09:56
すみません。学校の課題です。
外部から西暦、月、日を順に入力後、何日後を求めるかを問い合わせます。
そして、入力した日付からあとに入力した日数後の年月日を計算して出力します。
また,今回は、閏年も考慮します。
たとえば、
西暦:1990
月 :6
日 :30
何日後:45
結果 → 1990 年6 月 30 日から 45 日後は、1990年8月14日です。
という問題が出題されましたが6月30日が入力された場合、45日後は6月75日です。次に、6月の末日を75日から
引くと7月45日になります。つづいて、45日はまだ7月の末日よりも大きいので、7月の末日から引くと8月14日
にする方法が分かりません。どなたか教えていただけませんか?
私の途中までのプログラムは
#include <stdio.h>
int IsUruYear(int year)
{
int ret=0;
if(((year%4)==0 && (year%100)!=0) || (year%400)==0){
ret=1;
}
return ret;
}
int get_lastday(int year,int mon)
{
int days[/url]={31,28,31,30,31,30,31,31,30,31,30,31};
int d;
d=days[mon-1];
if(mon==2){
if(IsUruYear(year)){
d++;
}
}
return d;
}
int IsLastDay(int year,int mon,int day)
{
int days[/url]={31,28,31,30,31,30,31,31,30,31,30,31};
int ret=0;
int lastday;
lastday=days[mon-1];
if(mon==2){
if(IsUruYear(year)){
lastday++;
}
}
if(day==lastday) ret=1;
return ret;
}
void after(int num,int i)
{
while(i>num){
printf("%d",++i);
num++;
}
}
int main(void)
{
int year,day,mon,after;
int year1,day1,mon1;
printf("year:"); scanf("%d",&year);
printf("month:"); scanf("%d",&mon);
printf("day:"); scanf("%d",&day);
printf("after:"); scanf("%d",&after);
year1=year;
mon1=mon;
day1=day;
yestarday(&year,&mon,&day);
printf("何日後:%4d/%02d/%02d\n",year,mon,day);
return 0;
}
です。よろしくお願いします。
外部から西暦、月、日を順に入力後、何日後を求めるかを問い合わせます。
そして、入力した日付からあとに入力した日数後の年月日を計算して出力します。
また,今回は、閏年も考慮します。
たとえば、
西暦:1990
月 :6
日 :30
何日後:45
結果 → 1990 年6 月 30 日から 45 日後は、1990年8月14日です。
という問題が出題されましたが6月30日が入力された場合、45日後は6月75日です。次に、6月の末日を75日から
引くと7月45日になります。つづいて、45日はまだ7月の末日よりも大きいので、7月の末日から引くと8月14日
にする方法が分かりません。どなたか教えていただけませんか?
私の途中までのプログラムは
#include <stdio.h>
int IsUruYear(int year)
{
int ret=0;
if(((year%4)==0 && (year%100)!=0) || (year%400)==0){
ret=1;
}
return ret;
}
int get_lastday(int year,int mon)
{
int days[/url]={31,28,31,30,31,30,31,31,30,31,30,31};
int d;
d=days[mon-1];
if(mon==2){
if(IsUruYear(year)){
d++;
}
}
return d;
}
int IsLastDay(int year,int mon,int day)
{
int days[/url]={31,28,31,30,31,30,31,31,30,31,30,31};
int ret=0;
int lastday;
lastday=days[mon-1];
if(mon==2){
if(IsUruYear(year)){
lastday++;
}
}
if(day==lastday) ret=1;
return ret;
}
void after(int num,int i)
{
while(i>num){
printf("%d",++i);
num++;
}
}
int main(void)
{
int year,day,mon,after;
int year1,day1,mon1;
printf("year:"); scanf("%d",&year);
printf("month:"); scanf("%d",&mon);
printf("day:"); scanf("%d",&day);
printf("after:"); scanf("%d",&after);
year1=year;
mon1=mon;
day1=day;
yestarday(&year,&mon,&day);
printf("何日後:%4d/%02d/%02d\n",year,mon,day);
return 0;
}
です。よろしくお願いします。