新闻  |   论坛  |   博客  |   在线研讨会
C++ 程序设计三——顺序容器类
0750long | 2009-07-14 14:43:52    阅读:2085   发布文章

 

rar
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1\:*{behavior:url(#ieooui) }

一、实验目的

<!--[if !supportLists]-->l         <!--[endif]-->熟悉输出格式的设置;

<!--[if !supportLists]-->l         <!--[endif]-->熟悉vector、list类型的使用;

<!--[if !supportLists]-->l         <!--[endif]-->进一步熟悉string类型的使用。

二、实验环境

P4 1.7G计算机一台,Windows XP操作系统,Microsoft Visual C++ 2005编程环境。

三、实验内容及分析

(一)求数的平方

<!--[if !supportLists]-->1.         <!--[endif]-->题意描述:提示用户输入一个整数 I,编写一个程序来计算从1~I 的双精度浮点数(double)值的平方。程序的输出分为两列:第一列是double值,第二列是double值的平方。使用控制器来控制输出,让数值按列左对齐排列起来。 注意,程序应当有一定灵活性,当 I 增长时我们不需要修正setw的参数(亦即对于任意合理的I值,程序的输出都将以合适的格式显示,而不会出现当I较大时格式混乱的情况)。

<!--[if !supportLists]-->2.         <!--[endif]-->问题分析与解决

由于要求当 I 增长时我们不需要修正setw的参数,所以将setw的参数通过log10函数求得并向下取整得出w。这样就可以得到右对齐,要做到左对齐的话,还要用这个求出的参数w减去当前输出数字的宽度加上要输出字符“: ”的宽度2。

 

<!--[if !supportLists]-->3.         <!--[endif]-->调试、测试运行情况及结果分析

<!--[if !supportLists]-->(1)       <!--[endif]-->实验中碰到的问题及解决方法

pow、log10函数出现“ambiguous call to overloaded function  ”的错误,解决方法:用static_cast <type-id> ( expression )显式类型转换。后来看到“static_cast conversions are not as safe as dynamic_cast conversions, because static_cast does no run-time type check, while dynamic_cast does.”但经过查找发现,static_cast可以用于int转double,但后者就不行。

pow函数并不是很好,通用性太强了,可能精度也会不佳。解决方法:自己写个square函数求平方。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客