Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

請問一下模數%的使用

0 views
Skip to first unread message

rd

unread,
Aug 27, 2003, 8:14:52 PM8/27/03
to
//這個程式show出a值的因數
#include <iostream.h>
int main(void){
unsigned long a=2388883341;
unsigned long b=3;
unsigned long c=a/3;
do {

//加了下面這行結果會不一樣!好奇怪@@
cout<<"b="<<b<<"\r";

int d=a%b;
if ( d == 0)
{
cout<<b;
}
b=b+10;
}while(b<c);
return 0;
}
> > > 書上說%只能用在整數,但我編譯時,他總是說illegal use of floating point.
> > > 請問我該怎麼修正d=a%b 這個敘述呢! 謝謝!
>
> > > > 程式看來是沒什麼問題
> > > > 不過你知道double的大小嘛??
>
> double是真的蠻大的,(我看書上他的最大值約10的308次方)
> 因為書上是說%只能用在整數,所以我將double
> 換成long(<2147483647) 或int ,結果就沒有出現錯誤了(不知是不是這樣子的關係),
> 若是這樣子的話(資料型態能或不能顯示浮點數),那要怎麼修改呢?
> 謝謝!
> 我將double 換成unsigned long的資料型態,a給2388883341,b=3,他算出了幾個答案
> 133 2313 9383 5059383 32296353 73800393 139947363 184186353
> 我驗算了一下,發現程式計算的是近似值,在do下加了這一行cout<<"b="<<b<<"\r";
算出來的結果不一樣@@
>
> ps.使用double是因為預估會輸入一個相當大的值進去。
> --
> --
--
[1;32m※ Origin: [33m台灣科大電子站 [37m<bbs.et.ntust.edu.tw> [m
[1;31m◆ From: [36m218.163.12.13 [m

Bug J.

unread,
Aug 27, 2003, 11:51:33 AM8/27/03
to
有個函式叫fmod()或許可以試試看

==> 在 rd....@bbs.et.ntust.edu.tw (rd) 的文章中提到:
> 換成long(<2147483647) 或int ,結果就沒有出現錯誤了(不知是不是這樣子的關係),


--
* Post by mingchieh from bugj.Dorm11.NCTU.edu.tw
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

幻想的天空

unread,
Aug 28, 2003, 1:25:36 AM8/28/03
to
【 在 rd....@bbs.et.ntust.edu.tw (rd) 的大作中提到: 】
: //這個程式show出a值的因數
: #include <iostream.h>
: int main(void){
: double a=122283333333333338888883;
: double b=3;
: int d=a%b;
: do {
: if ( d == 0)
: {
: cout<<b;
: }
: b++;
: }while(b<a);
: return 0;

: }
: 書上說%只能用在整數,但我編譯時,他總是說illegal use of floating point.
: 請問我該怎麼修正d=a%b 這個敘述呢! 謝謝!

我是將 a與b 原先的double --> 改成 int
還有 a的 constant 太大了 要改小一點
這樣就可以執行ㄌ

--
[m [1;33m※來源 : [1;36m 台北科大計中紅樓資訊站 [1;35mredbbs.cc.ntut.edu.tw
[1;32m※FROM : [1;37m140.124.181.85 [m

rd

unread,
Aug 28, 2003, 5:01:57 AM8/28/03
to
※ 引述《airfe...@redbbs.cc.ntut.edu.tw (幻想的天空)》之銘言:

> 【 在 rd....@bbs.et.ntust.edu.tw (rd) 的大作中提到: 】
> : //這個程式show出a值的因數
> : #include <iostream.h>
> : int main(void){
> : double a=122283333333333338888883;
> : double b=3;
> : int d=a%b;
> : do {
> : if ( d == 0)
> : {
> : cout<<b;
> : }
> : b++;
> : }while(b<a);
> : return 0;
> : }
> : 書上說%只能用在整數,但我編譯時,他總是說illegal use of floating point.
> : 請問我該怎麼修正d=a%b 這個敘述呢! 謝謝!
> 我是將 a與b 原先的double --> 改成 int
> 還有 a的 constant 太大了 要改小一點
> 這樣就可以執行ㄌ
如前篇文章mingchieh網友所提的,將int d=a%b;

改成double d=fmod(a,b); fmod()在 math.h裡
可以得到a/b的餘數。
.
.
.
.
.
.

0 new messages