题目大意:

  制作一个日历系统,输入年份。一些周年纪念日,及服务要求日期,依据要求日期输出,输出重要程度小于发生日期的周年纪念日。

题目地址:

  UVA  145



个人见解:

  纯模拟,在闰年,输出顺序及输出范围可能跨年上有坑。攻克了这些后,依然困了我十多天,一直没过,求指导。

  我的程序里先读入周年纪念日,l代表周年纪念日的数量,每读入一个服务日期。调用f()函数,f()函数里先计算每日期相对于当年月号的日期。然后Is()函数推断是否要输出并将要输出移至数组前方,k代表要输出的周年纪念日的数量,最后按日期。重要程度。输入先后排序,输出。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int d[1000],m[1000],n[1000],p[1000],q[1000];
int y,i,j,k,l;
char s[1000][255];
int Is(int i,int j)
{
int x,z;
if (n[i]>=n[0]) x=n[i]-n[0];
else x=n[i]+365+y-n[0];
if (n[j]>=n[0]) z=n[j]-n[0];
else z=n[j]+365+y-n[0];
if (x>z) return 1;
else if (x==z&&p[i]<p[j]) return 1;
else if (x==z&&p[i]==p[j]&&q[i]>q[j]) return 1;
else return 0;
}
int swap(int i,int j)
{
int t;
char c[255];
t=d[i];
d[i]=d[j];
d[j]=t;
t=m[i];
m[i]=m[j];
m[j]=t;
t=n[i];
n[i]=n[j];
n[j]=t;
t=p[i];
p[i]=p[j];
p[j]=t;
t=q[i];
q[i]=q[j];
q[j]=t;
strcpy(c,s[i]);
strcpy(s[i],s[j]);
strcpy(s[j],c);
return 0;
}
int f()
{
for (i=0;i<l;i++)
{
if (m[i]==1) n[i]=d[i];
if (m[i]==2) n[i]=31+d[i];
if (m[i]==3) n[i]=59+d[i];
if (m[i]==4) n[i]=90+d[i];
if (m[i]==5) n[i]=120+d[i];
if (m[i]==6) n[i]=151+d[i];
if (m[i]==7) n[i]=181+d[i];
if (m[i]==8) n[i]=212+d[i];
if (m[i]==9) n[i]=243+d[i];
if (m[i]==10) n[i]=273+d[i];
if (m[i]==11) n[i]=304+d[i];
if (m[i]==12) n[i]=334+d[i];
if (y&&m[i]>2) n[i]++;
}
k=1;
for (i=1;i<l;i++)
if ((n[i]>=n[0]&&n[i]-n[0]<=p[i])||(n[i]+365+y>=n[0]&&n[i]+365+y-n[0]<=p[i]))
{
swap(k,i);
k++;
}
for (i=1;i<k;i++)
for (j=i;j<k;j++)
if (Is(i,j)) swap(i,j);
printf("Today is:%3d%3d\n",d[0],m[0]);
for (i=1;i<k;i++)
{
printf("%3d%3d ",d[i],m[i]);
if (n[i]==n[0]) printf("*TODAY*");
else
{
if (n[i]>n[0])
{
for (j=0;j<p[i]+n[0]-n[i]+1;j++) printf("*");
for (j=0;j<7-(p[i]+n[0]-n[i]+1);j++) printf(" ");
}
else
{
for (j=0;j<p[i]+n[0]-n[i]-365-y+1;j++) printf("*");
for (j=0;j<7-(p[i]+n[0]-n[i]-365-y+1);j++) printf(" ");
}
}
printf(" %s\n",s[i]);
}
return 0;
}
int main()
{
char ch;
scanf("%d\n",&y);
if (y%4==0) y=1;
else y=0;
l=1;
while (scanf("%c",&ch)&& ch!='#')
{
if (ch=='A') {scanf("%d%d%d \n",&d[l],&m[l],&p[l]);gets(s[l]);q[l]=l;l++;}
if (ch=='D') {scanf("%d%d\n",&d[0],&m[0]);f();}
}
return 0;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

《实验数据的结构化程序设计》 2.4.4Calendar个人意见,寻求指引的更多相关文章

  1. App6种常见的数据加载设计

    App6种常见的数据加载设计 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载 ...

  2. 面向对象和结构化程序设计的区别X

    面向对象和结构化程序设计的区别 结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的.转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的" ...

  3. 实验一《开发环境的熟悉》&实验二《固件设计》

    20145312&20145338 实验一<开发环境的熟悉>&实验二<固件设计> 合作博客链接:http://www.cnblogs.com/yx2014531 ...

  4. 大数据之ETL设计详解

    ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...

  5. D3js初探及数据可视化案例设计实战

    摘要:本文以本人目前所做项目为基础,从设计的角度探讨数据可视化的设计的方法.过程和结果,起抛砖引玉之效.在技术方案上,我们采用通用web架构和d3js作为主要技术手段:考虑到项目需求,这里所做的可视化 ...

  6. SAP Basis DEBUG改表数据权限角色设计

    SAP Basis DEBUG改表数据权限角色设计 项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了. DEBUG的权限,无非就是: 1)数 ...

  7. java学习-初级入门-面向对象①-面向对象概述-结构化程序设计

    为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类. 要求进行结构化程序设计. 学生类: Student 要求:存储学生的基本信息(姓名.性别.学历层次和年级),实现学生信息的 ...

  8. 《数字信号处理》课程实验2 – FIR数字滤波器设计

    一.FIR数字滤波器设计原理  本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...

  9. ArcGIS10从入门到精通系列实验图文教程(附配套实验数据持续更新)

    @ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 本教程<ArcGIS从入门到精通系列实验教程>内容包括:ArcGIS平台简介.ArcGIS应用基础.空间数据的采集 ...

随机推荐

  1. LVS Nginx HAProxy 优缺点

    搭建负载均衡高可用环境相对简单,主要是要理解其中原理.此文描述了三种负载均衡器的优缺点,以便在实际的生产应用中,按需求取舍. 目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LV ...

  2. poj 1094

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26911   Accepted: 92 ...

  3. 如何搭建NTP服务(转)

    最近,在搭建Oracle RAC过程中,需要用到DNS和NTP,其中,DNS用于域名.IP管理,NTP用于时间同步.其实,很久以前搭建过这两种服务,但技术,本质上,符合“用进废退”的客观规律.用得越频 ...

  4. uva11426(莫比乌斯反演)

    传送门:GCD Extreme (II) 题意:给定n(n<=4000000),求G G=0 for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) ...

  5. broadcom6838开发环境实现函数栈追踪

    在嵌入式设备开发中.内核为内核模块的函数栈追踪已经提供了非常好的支持,但用户层的函数栈追踪确没有非常好的提供支持. 在网上收集学习函数栈跟踪大部分都是描写叙述INTER体系架构支持栈帧的实现机制.或者 ...

  6. zoj3209(DLX)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16234 题意:给p张小纸片, 问能不能选出尽量少的一部分或全部数量 ...

  7. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...

  8. [Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换

    [Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换 问题现象: 碰到一个问题,UI交互表现为:联通号码在3gwap网络环境下资源一直无法下载成功. 查看Log日志,打印出 ...

  9. Java调用cmd压缩文件

    今天在做一个java调用windows的压缩命令时遇到一奇怪问题代码如下: String cmd ="C:/Program Files (x86)/WinRAR/rar.exe a c:/t ...

  10. Android - 通过Intent启动Activity

    通过Intent启动Activity 本文地址: http://blog.csdn.net/caroline_wendy 为了动态关联Activity界面,使用Intent启动.能够灵活绑定. 在In ...