`
sjgau
  • 浏览: 96990 次
  • 性别: Icon_minigender_1
  • 来自: 台灣省 台北市
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

計算時間的副程式

c 
阅读更多
精確度可以到 10 ms

// file: psc51.cpp
// for time1(), time2()

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/timeb.h>
#include <time.h>
// ----------------------------------------------

#include "sj01.h"
// ----------------------------------------------

//   time1(&t1);
void time1(long *t1)
{
/* FTIME.C: This program uses _ftime to obtain the current
 * time and then stores this time in timebuffer.

millitm
Fraction of a second in milliseconds.

time
Time in seconds since midnight (00:00:00), January 1, 1970, coordinated universal time (UTC).
 */

   struct _timeb timebuffer;
   // char *timeline;
   long t2, t3, t4, t5, t6;

   _ftime( &timebuffer );
   // timeline = ctime( & ( timebuffer.time ) );

   t2= timebuffer.time;// 秒
   t3= t2%(1L*24L*60L*60L);
   t4= t3*1000L;

   t5= timebuffer.millitm;// 千分之ㄧ秒
   t6= t4 + t5;
   *t1= t6;

   // printf( "The time is %.19s.%hu %s", timeline, timebuffer.millitm, &timeline[20] );
   // printf("%ld, %ld, %ld, %ld, %ld, \n", 
   //	       t2,  t3,  t4,  t5,  t6);
}// end of time1()
// ----------------------------------------------

//   time2(     t1,        &dt);
void time2(long t1, double *dt)
{
	long t2;
	time1(&t2);

	*dt= (t2 - t1)/1000.0;

	// (*dt) >= 0
	if ((*dt) < 0) {
		(*dt)+= 1.0*24.0*60.0*60.0;
	}
}// end of time2()
// ----------------------------------------------

void main()
{
	int no, sum, i, ct1= 0;
	long t1;
	double dt;
	// ----------------------------------------------

	no= 10;
	skip(3);
	while (no > 0) {
		time1(&t1);

		sum= 0;
		for (i=1;i<=no;i++) {
			sum+= i;
		}
		time2(t1, &dt);
		// ----------------------------------------------

		ct1++;
		printf("ct1= %3ld, no= %12ld, sum= %12ld, t1= %8ld, dt= %8.4lf\n", 
			ct1, no, sum, t1, dt);

		if (dt > 0) {
			pause();
		}

		if (ct1>=16) {
			// break;
		}

		no*= 2;
	}

	skip(1);
	printf("*** end of program!\n");
}// end of main()
分享到:
评论
1 楼 sjgau 2007-12-20  
以下程式,可以證明 最小的時間間隔是
10 ms

// file: psc51.cpp
// for time1(), time2(), min. dt= 0.01 second, 10 ms

/*
no=   2000000000, sum=  -1973237248, dt=     9.9840
no=   1818181818, sum=    996434927, dt=     9.0630
no=   1652892561, sum=  -1341125159, dt=     8.2520
no=   1502629601, sum=   -796977071, dt=     7.4910
no=   1366026910, sum=    574788113, dt=     6.8100
no=   1241842646, sum=  -1808278179, dt=     6.1890
no=   1128947860, sum=   -626730222, dt=     5.6380
no=   1026316236, sum=   -525053650, dt=     5.1270
no=    933014760, sum=  -1953325164, dt=     4.6570
no=    848195236, sum=  -1742216230, dt=     4.2260
no=    771086578, sum=    478252763, dt=     3.8450
no=    700987798, sum=    512634557, dt=     3.4950
no=    637261635, sum=  -1422935706, dt=     3.1650
no=    579328759, sum=    891927204, dt=     2.8940
no=    526662508, sum=   1623693438, dt=     2.6240
no=    478784098, sum=  -1385563149, dt=     2.3830
no=    435258271, sum=    511561776, dt=     2.1740
no=    395689337, sum=   -128593835, dt=     1.9720
no=    359717579, sum=   -939025438, dt=     1.7930
no=    327015981, sum=  -1121912565, dt=     1.6320
no=    297287256, sum=  -1212973492, dt=     1.4820
no=    270261141, sum=   1592856615, dt=     1.3420
no=    245691947, sum=  -1959145294, dt=     1.2220
no=    223356315, sum=  -1462032198, dt=     1.1120
no=    203051195, sum=    163962026, dt=     1.0110
no=    184591996, sum=  -1885152954, dt=     0.9210
no=    167810905, sum=  -1413653979, dt=     0.8320
no=    152555368, sum=    585667796, dt=     0.7610
no=    138686698, sum=   1458987879, dt=     0.6910
no=    126078817, sum=  -1654396655, dt=     0.6310
no=    114617106, sum=  -2042659797, dt=     0.5710
no=    104197369, sum=   -699008107, dt=     0.5200
no=     94724881, sum=   -990722791, dt=     0.4710
no=     86113528, sum=   1938134684, dt=     0.4310
no=     78285026, sum=  -1795049421, dt=     0.3900
no=     71168205, sum=  -2009564549, dt=     0.3610
no=     64698368, sum=   1879940096, dt=     0.3200
no=     58816698, sum=  -1577963537, dt=     0.2910
no=     53469726, sum=  -1024037167, dt=     0.2800
no=     48608841, sum=   1671809933, dt=     0.2400
no=     44189856, sum=   1088312912, dt=     0.2210
no=     40172596, sum=   1774039906, dt=     0.1900
no=     36520542, sum=   -264835471, dt=     0.1900
no=     33200493, sum=   1885931755, dt=     0.1600
no=     30182266, sum=   -971169585, dt=     0.1610
no=     27438424, sum=   1160863180, dt=     0.1300
no=     24944021, sum=    443177767, dt=     0.1300
no=     22676383, sum=   -442920912, dt=     0.1100
no=     20614894, sum=   2020588057, dt=     0.1000
no=     18740812, sum=    698748526, dt=     0.0900
no=     17037102, sum=    190898617, dt=     0.0910
no=     15488275, sum=   2082273854, dt=     0.0800
no=     14080250, sum=  -1118120305, dt=     0.0700
no=     12800227, sum=    705821974, dt=     0.0600
no=     11636570, sum=   -977953409, dt=     0.0600
no=     10578700, sum=   -381797938, dt=     0.0600
no=      9617000, sum=   -563567532, dt=     0.0400
no=      8742727, sum=   1023069820, dt=     0.0500
no=      7947934, sum=   -358086639, dt=     0.0400
no=      7225394, sum=  -1648384773, dt=     0.0300
no=      6568540, sum=   -758577738, dt=     0.0400
no=      5971400, sum=    402720004, dt=     0.0300
no=      5428545, sum=  -1479669791, dt=     0.0200
no=      4935041, sum=   1085019201, dt=     0.0300
no=      4486401, sum=    790835073, dt=     0.0200
no=      4078546, sum=  -2080876021, dt=     0.0200
no=      3707769, sum=   1829658965, dt=     0.0200
no=      3370699, sum=  -1434172958, dt=     0.0210
no=      3064272, sum=    483722600, dt=     0.0100
no=      2785702, sum=   1713740965, dt=     0.0100
no=      2532456, sum=  -1672607916, dt=     0.0200
no=      2302233, sum=    144722629, dt=     0.0100
no=      2092939, sum=   -235445630, dt=     0.0100
no=      1902672, sum=   1900089512, dt=     0.0100
no=      1729702, sum=   1286750245, dt=     0.0100
no=      1572456, sum=   -640859052, dt=     0.0100
no=      1429505, sum=   -459229183, dt=     0.0000
no=      1299550, sum=  -1692806287, dt=     0.0100
no=      1181409, sum=   2079501393, dt=     0.0000
no=      1074008, sum=   1221511372, dt=     0.0000
no=       976371, sum=    -90716850, dt=     0.0100
no=       887610, sum=  -1210791377, dt=     0.0000
no=       806918, sum=   -858781675, dt=     0.0000
no=       733562, sum=  -1525968945, dt=     0.0100
no=       666875, sum=   -976833142, dt=     0.0000
no=       606250, sum=   -913759353, dt=     0.0000
no=       551136, sum=   1551865456, dt=     0.0100
no=       501033, sum=    963232477, dt=     0.0000
no=       455484, sum=    653849766, dt=     0.0000
no=       414076, sum=   -169671994, dt=     0.0000
no=       376433, sum=   2131613225, dt=     0.0100
no=       342212, sum=  -1574844566, dt=     0.0000
no=       311102, sum=   1147742497, dt=     0.0000
no=       282820, sum=   1339011946, dt=     0.0000
no=       257109, sum=  -1307090873, dt=     0.0000
no=       233735, sum=   1546338204, dt=     0.0000
no=       212486, sum=   1100419861, dt=     0.0000
no=       193169, sum=   1477358681, dt=     0.0100
no=       175609, sum=  -1760520939, dt=     0.0000
no=       159644, sum=   -141718698, dt=     0.0000
no=       145131, sum=   1941641554, dt=     0.0000
no=       131937, sum=    113817361, dt=     0.0000
no=       119943, sum=  -1396712996, dt=     0.0000
no=       109039, sum=   1649838984, dt=     0.0000
no=        99126, sum=    618064205, dt=     0.0000
no=        90115, sum=   -234565626, dt=     0.0000
no=        81922, sum=   -939319293, dt=     0.0000
no=        74475, sum=  -1521667246, dt=     0.0000
no=        67704, sum=  -2003017636, dt=     0.0000
no=        61549, sum=   1894170475, dt=     0.0000
no=        55954, sum=   1565453035, dt=     0.0000
no=        50867, sum=   1293751278, dt=     0.0000
no=        46243, sum=   1069230646, dt=     0.0000
no=        42039, sum=    883659780, dt=     0.0000
no=        38217, sum=    730288653, dt=     0.0000
no=        34743, sum=    603555396, dt=     0.0000
no=        31584, sum=    498790320, dt=     0.0000
no=        28713, sum=    412232541, dt=     0.0100
no=        26103, sum=    340696356, dt=     0.0000
no=        23730, sum=    281568315, dt=     0.0000
no=        21572, sum=    232686378, dt=     0.0000
no=        19611, sum=    192305466, dt=     0.0000
no=        17828, sum=    158927706, dt=     0.0000
no=        16208, sum=    131357736, dt=     0.0000
no=        14734, sum=    108552745, dt=     0.0000
no=        13395, sum=     89719710, dt=     0.0000
no=        12177, sum=     74145753, dt=     0.0000
no=        11070, sum=     61277985, dt=     0.0000
no=        10063, sum=     50637016, dt=     0.0000
no=         9148, sum=     41847526, dt=     0.0000
no=         8317, sum=     34590403, dt=     0.0000
no=         7561, sum=     28588141, dt=     0.0000
no=         6873, sum=     23622501, dt=     0.0000
no=         6248, sum=     19521876, dt=     0.0000
no=         5680, sum=     16134040, dt=     0.0000
no=         5164, sum=     13336030, dt=     0.0000
no=         4694, sum=     11019165, dt=     0.0000
no=         4268, sum=      9110046, dt=     0.0000
no=         3880, sum=      7529140, dt=     0.0000
no=         3527, sum=      6221628, dt=     0.0000
no=         3206, sum=      5140821, dt=     0.0000
no=         2915, sum=      4250070, dt=     0.0000
no=         2650, sum=      3512575, dt=     0.0000
no=         2409, sum=      2902845, dt=     0.0000
no=         2190, sum=      2399145, dt=     0.0000
no=         1991, sum=      1983036, dt=     0.0000
no=         1810, sum=      1638955, dt=     0.0000
no=         1645, sum=      1353835, dt=     0.0000
no=         1495, sum=      1118260, dt=     0.0000
no=         1359, sum=       924120, dt=     0.0000
no=         1236, sum=       764466, dt=     0.0000
no=         1123, sum=       631126, dt=     0.0000
no=         1021, sum=       521731, dt=     0.0000
no=          928, sum=       431056, dt=     0.0000
no=          844, sum=       356590, dt=     0.0000
no=          767, sum=       294528, dt=     0.0000
no=          697, sum=       243253, dt=     0.0000
no=          634, sum=       201295, dt=     0.0000
no=          576, sum=       166176, dt=     0.0000
no=          524, sum=       137550, dt=     0.0000
no=          476, sum=       113526, dt=     0.0000
no=          433, sum=        93961, dt=     0.0000
no=          393, sum=        77421, dt=     0.0000
no=          358, sum=        64261, dt=     0.0000
no=          325, sum=        52975, dt=     0.0000
no=          295, sum=        43660, dt=     0.0000
no=          269, sum=        36315, dt=     0.0000
no=          244, sum=        29890, dt=     0.0000
no=          222, sum=        24753, dt=     0.0000
no=          202, sum=        20503, dt=     0.0000
no=          183, sum=        16836, dt=     0.0000
no=          167, sum=        14028, dt=     0.0000
no=          151, sum=        11476, dt=     0.0000
no=          138, sum=         9591, dt=     0.0000
no=          125, sum=         7875, dt=     0.0000
no=          114, sum=         6555, dt=     0.0000
no=          103, sum=         5356, dt=     0.0000
no=           94, sum=         4465, dt=     0.0000
no=           85, sum=         3655, dt=     0.0000
no=           77, sum=         3003, dt=     0.0000
no=           70, sum=         2485, dt=     0.0000
no=           64, sum=         2080, dt=     0.0000
no=           58, sum=         1711, dt=     0.0000
no=           53, sum=         1431, dt=     0.0000
no=           48, sum=         1176, dt=     0.0000
no=           43, sum=          946, dt=     0.0000
no=           39, sum=          780, dt=     0.0000
no=           36, sum=          666, dt=     0.0000
no=           33, sum=          561, dt=     0.0000
no=           30, sum=          465, dt=     0.0000
no=           27, sum=          378, dt=     0.0000
no=           24, sum=          300, dt=     0.0000
no=           22, sum=          253, dt=     0.0000
no=           20, sum=          210, dt=     0.0000
no=           18, sum=          171, dt=     0.0000
no=           16, sum=          136, dt=     0.0000
no=           15, sum=          120, dt=     0.0000
no=           14, sum=          105, dt=     0.0000
no=           12, sum=           78, dt=     0.0000
no=           11, sum=           66, dt=     0.0000

*** end of program! dt_min=     0.0100
Press any key to continue
  */

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include <sys/timeb.h>
#include <time.h>
// ----------------------------------------------

#include "sj01.h"
#include "sj02.h"
// ----------------------------------------------

//  get_sum(no);
int get_sum(int no)
{
	int sum= 0;
	for (int i=1;i<=no;i++) {
		sum+= i;
	}
	return(sum);
}// end of get_sum()
// ----------------------------------------------

void main()
{
	int no, sum, t1;
	double x1= 20e8, dt, dt_min= 999;
	// ----------------------------------------------

	skip(3);
	no= (int) x1;
	while (no > 10) {
		time1(&t1);
		sum= get_sum(no);
		time2(t1, &dt);
		// ----------------------------------------------

		printf("no= %12ld, sum= %12ld, dt= %10.4lf\n", 
		    no, sum, dt);

		if (dt > 0) {
			// dt_min must <= any dt
			if (dt_min > dt) {
				dt_min= dt;
			}
		}

		x1/= 1.1;
		no= (int) x1;
	}

	skip(1);
	printf("*** end of program! dt_min= %10.4lf\n", dt_min);
}// end of main()



相关推荐

    公用程式:@postilioncoreutils

    在JavaScript生态系统中,"公用程式"通常指的是提供各种实用功能的模块或库,帮助开发者处理日常编程任务,比如字符串操作、数组处理、日期时间格式化等。这些工具函数集通常具有高可复用性,可以大大提高开发效率。...

    滚珠丝杠选型和电机选型计算.pdf

    计算滚珠丝杠副的预期额定动载荷需要考虑预期工作时间、预期运行距离、最大轴向负载等因素。 4. 估算滚珠丝杠的最大允许轴向变形量 滚珠丝杠的最大允许轴向变形量是滚珠丝杠的关键参数。根据 X 向运动的重复定位...

    关于编程知识--进程的科普

    在抢占式操作系统中,假设有若干进程,操作系统会根据他们的优先级、饥饿时间(已经多长时间没有使用过 CPU 了),给他们算出一 个总的优先级来。操作系统就会把 CPU 交给总优先级最高的这个进程。当进程执行完毕...

    核决权限表(DOC格式).doc

    10. **电脑类**:电脑业务政策的制定、系统计划呈核、设备购置及更换等,均需经过审批,部分操作如电脑程式设计和修改由副课长批准。 11. **财务类**:资金预算、收获作业和零用金管理是财务部门的重要职责,如预算...

    SYNTEC新代系统MACRO宏程序手册.pdf

    在数控系统的编程中,宏程序是通过一种结构化的编程语言来实现的,包括了对函数列表、副程序调用、变数规格的详细说明。这些编程元素包括公用变数、区域变数、系统变数、模态变数、客户参数、介面信号、模式群组变数...

    机电一体化系统设PPT学习教案.pptx

    为了消除间隙和提高精度,可以采用双螺母齿差式、双螺母螺纹式、双螺母垫片式或单螺母变位导程自预紧式的方法进行预紧。 谐波齿轮减速器是一种利用柔性轮的可控变形来实现动力传递的装置,它可以分为连续作用式和...

    基于Matlab的3-RRRT并联机器人的动力学分析.pdf

    文章指出,使用Matlab进行动力学分析的优点在于它可以进行程式化高、易于理解和编程计算的工作。通过Matlab,研究者能够分析并联机构在不同运动规律下的动态特性,并为机构的轨迹规划和电机参数的选取提供有力的数据...

    APAP4中文版.doc

    * 副程式或自定义函数的调用。 * SQL语法使用。 * 数据结构的使用,如process internal table的声明与使用。 三、Reports Overview * 报表任务(Reports Task),如报表预览或打印的选择。 * 报表模块是一个独立的...

    电气工程及其自动化考试题.pdf

    9. **分程控制系统**:当一个调节器的输出信号控制两个或多个调节阀,且每个阀在不同信号区间工作,就构成了分程控制系统,可以实现更精细的控制。 10. **前馈控制**:前馈控制能针对特定干扰进行补偿,与反馈控制...

    ERP信息化专业资料:GP3.0重复性性生产.ppt

    在GP3.0中,生产计划是基于销售预测进行的,通过移动式检视日排程,可以明确产品的生产时间、机台维修时间和换线时间,进而最大化利用产能。报工作业提供了对机台稼动率、人员效率和不良率的分析,有助于发现生产...

    西南交大机械原期中试卷2000

    - 根据机构的行程速比系数K,以及滑块的总行程时间,计算推程和回程的时间分配。 - 结合凸轮每转一圈的角度(360°),确定推程运动角和回程运动角的具体数值。 #### 2. 凸轮廓线的方程 - **原理**: 根据给定的从...

    机电一体化系统综合课程设计(X-Y数控工作台设计说明书)

    ⑵、滚珠丝杠螺母副几何参数计算 表 2-1 滚珠丝杠螺母副几何参数 名 称符 号计算公式和结果 螺纹滚道公称直径10 螺距 接触角 钢球直径 螺纹滚道法面半径 偏心距 螺纹升角 螺杆 螺杆外径 螺杆内径 螺杆接触直径 螺母 ...

    浙教版2021-2022学年度七年级数学下册模拟测试卷 (2037).docx

    ### 知识点九:代数式的简化与计算 **例题9:** 下列各式中,计算正确的是() 这类问题主要考察学生的代数运算能力,包括代数式的简化、合并同类项等基础操作。 ### 知识点十:概率 **例题11:** 同时抛掷两枚1...

    04大学生培训试题答案20040415.doc

    在彩电生产中,配管是为了匹配电路板与显像管的参数,确保行逆程时间在标准范围内,如PAL-D制式要求的11.8~12μs。 7. **电路分析**:试题中的电路分析涉及基础电子电路知识,如电压的计算和晶体振荡器的谐振频率等...

    直线共轭齿廓齿轮副的滑动系数研究 (2007年)

    直线共轭齿廓齿轮副的滑动系数研究,主要讨论了基于复数矢量法构建的直线共轭齿廓啮合线方程,并导出了啮合点的速度方程和相对滑动系数的计算式。在此基础上,研究者进一步作出了运动速度和相对滑动系数的变化曲线,...

    西南交大机械原理期中考试试题2001

    - 确定凸轮的推程运动角和回程运动角,并给出凸轮廓线的方程式。 #### 六、速度瞬心法求构件速度与角速度 **题目解析:** 这部分要求使用速度瞬心法求解构件4的速度和构件5的角速度。 1. **速度瞬心法原理**: ...

    商务新员工考试总结.doc

    这次考试涵盖了**算量和手算两个方面,通过对图纸和**模型的深入剖析,帮助新员工理解计算设置、模型建立、图纸分析以及手工算量的基本流程和技巧。 在考试后的讲解总结会上,赵**,**分公司经济管理部的负责人,...

    物理考试卷

    - **分程控制系统**:一个控制器控制多个执行器,实现灵活的控制策略。 - **选择控制系统**:根据不同的条件选择不同的控制模式。 - **前馈控制系统**:用于补偿已知干扰对被控对象的影响。 - **比值控制系统**:...

    2021年化工自动化控制仪表考试内容及化工自动化控制仪表考试资料 .docx

    17. 椭圆齿轮流量计、活塞式流量计和圆盘流量计都属于容积式流量计,通过测量流体在特定时间内充满固定容积的次数来计算流量。 18. 在CENTUM CS3000系统中,SV代表给定值,即期望的控制输出。 19. 工作端为100℃,...

Global site tag (gtag.js) - Google Analytics