小紅帽技術論壇 在這裡你可以看到你訂閱的主題,悄悄話,編輯個人資料及環境設定 免費註冊! 行事曆 搜尋其他會員 常見問題
搜尋 小紅帽流量分析 小紅帽專用irc 聊天室 Web 版!建議安裝使用 hmirc 軟體! 回首頁 登出
小紅帽技術論壇 : Powered by vBulletin version 2.2.9 小紅帽技術論壇 > 電腦類 > 程式設計討論區 > 20數的整數變成小數^^
  上一篇主題   下一篇主題
作者
主題、內容    發表新的文章     回覆文章

o919576356
新進會員


註冊日期: Nov 2004
來自:
發表文章數: 9

20數的整數變成小數^^

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ch='0';
int a[20]={0},ia=0;
int b[20]={0},ib=0;
int s[21]={0},is=0;
int da=0,db=0,ds=0,carry=0;
// suppose a number is beginned with non-zero digit
for (ia=0;ia<20;ia++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
a[ia]=ch-'0';
else
break;
}

printf("\n");
ch='0';

for (ib=0;ib<20;ib++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
b[ib]=ch-'0';
else
break;
}

printf("\n");

carry=0;
for (is=20;is>=0;is--)
{
ia--;
if (ia>=0)
da=a[ia];
else
da=0;

ib--;
if (ib>=0)
db=b[ib];
else
db=0;

if ( (ia<0)&&(ib<0)&&(carry==0) )
break;
else
{
s[is]=(da+db+carry)%10;
carry=(da+db+carry)/10;
}
}
is++;
for (;is<21;is++)
printf("%d",s[is]);

printf("\n");
system("PAUSE");
return 0;
}

請問大大~怎麼把它變成小數哩!^^

文章編號:0 | 向板主反映這篇文章 | 顯示 IP

o919576356 已離線! Old Post 11-22-2004 23:53
點選這裡查看 o919576356 的個人檔案 點選這裡寄送 Email 給 o919576356 按這裡傳送悄悄話給 o919576356 按這裡搜尋 o919576356 所發表的文章 按這裡將 o919576356 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

我愛上java了
中級會員


註冊日期: Oct 2004
來自: 苗栗縣
發表文章數: 349

Re: 20數的整數變成小數^^

引言:
原作者是 o919576356

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ch='0';
int a[20]={0},ia=0;
int b[20]={0},ib=0;
int s[21]={0},is=0;
int da=0,db=0,ds=0,carry=0;
// suppose a number is beginned with non-zero digit
for (ia=0;ia<20;ia++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
a[ia]=ch-'0';
else
break;
}

printf("\n");
ch='0';

for (ib=0;ib<20;ib++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
b[ib]=ch-'0';
else
break;
}

printf("\n");

carry=0;
for (is=20;is>=0;is--)
{
ia--;
if (ia>=0)
da=a[ia];
else
da=0;

ib--;
if (ib>=0)
db=b[ib];
else
db=0;

if ( (ia<0)&&(ib<0)&&(carry==0) )
break;
else
{
s[is]=(da+db+carry)%10;
carry=(da+db+carry)/10;
}
}
is++;
for (;is<21;is++)
printf("%d",s[is]);

printf("\n");
system("PAUSE");
return 0;
}

請問大大~怎麼把它變成小數哩!^^


請問我們的進位是怎麼進位的 平常是怎麼將小數變成整數的

你連基本功課都沒做好,連數學......想一下他的演算法吧

各位大大不回答是因為....................你要做好你的功課

這算是新手解題的基本........................你自己要會



---------------------------------------------------------- 簽名列 -----------

為了學java,而到處看別人的問題

多多請教別人,才是正途。

有禮貌最重要

文章編號:1 | 向板主反映這篇文章 | 顯示 IP

我愛上java了 已離線! Old Post 11-24-2004 10:56
點選這裡查看 我愛上java了 的個人檔案 按這裡傳送悄悄話給 我愛上java了 按這裡搜尋 我愛上java了 所發表的文章 按這裡將 我愛上java了 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

blueshine
高級會員


註冊日期: Sep 2003
來自: 板橋
發表文章數: 656

你所謂的"小數"是…?
感覺你要做的是大數加法耶



---------------------------------------------------------- 簽名列 -----------

文章編號:2 | 向板主反映這篇文章 | 顯示 IP

blueshine 已離線! Old Post 11-25-2004 10:50
點選這裡查看 blueshine 的個人檔案 點選這裡寄送 Email 給 blueshine 按這裡傳送悄悄話給 blueshine 參觀 blueshine 的個人首頁! 按這裡搜尋 blueshine 所發表的文章 按這裡將 blueshine 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

o919576356
新進會員


註冊日期: Nov 2004
來自:
發表文章數: 9

Re: Re: 20數的整數變成小數^^

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ch='0';
int a[25]={0},ia=0;
int b[25]={0},ib=0;
int s[26]={0},is=0;
int da=0,db=0,ds=0,carry=0;
// suppose a number is beginned with non-zero digit
for (ia=0;ia<25;ia++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
a[ia]=ch-'0';
else
break;
}

printf("\n");
ch='0';

for (ib=0;ib<25;ib++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
b[ib]=ch-'0';
else
break;
}

printf("\n");

carry=0;
for (is=25;is>=0;is--)
{
ia--;
if (ia>=0)
da=a[ia];
else
da=0;

ib--;
if (ib>=0)
db=b[ib];
else
db=0;

if ( (ia<0)&&(ib<0)&&(carry==0) )
break;
else
{
s[is]=(da+db+carry)%10;
carry=(da+db+carry)/10;
}
}
is++;
for (;is<26;is++)
{
if (is == 5)
printf("%c",'.');
printf("%d",s[is]);
}
printf("\n");
system("PAUSE");
return 0;
}

大大請指教~~我有了小數點~但是...好像還是怪怪??
請糾正一下吶

文章編號:3 | 向板主反映這篇文章 | 顯示 IP

o919576356 已離線! Old Post 11-26-2004 17:28
點選這裡查看 o919576356 的個人檔案 點選這裡寄送 Email 給 o919576356 按這裡傳送悄悄話給 o919576356 按這裡搜尋 o919576356 所發表的文章 按這裡將 o919576356 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

blueshine
高級會員


註冊日期: Sep 2003
來自: 板橋
發表文章數: 656

你要不要將你程式的目的重新表達清楚呢…
input是什麼…? output又是什麼…?



---------------------------------------------------------- 簽名列 -----------

文章編號:4 | 向板主反映這篇文章 | 顯示 IP

blueshine 已離線! Old Post 11-26-2004 21:04
點選這裡查看 blueshine 的個人檔案 點選這裡寄送 Email 給 blueshine 按這裡傳送悄悄話給 blueshine 參觀 blueshine 的個人首頁! 按這裡搜尋 blueshine 所發表的文章 按這裡將 blueshine 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

o919576356
新進會員


註冊日期: Nov 2004
來自:
發表文章數: 9

大大~我程式的目的是
可以接受最多小數點以上20位,以下5位的兩個正數相加!
有了小數點~後面的數字卻被砍掉ㄌ

文章編號:5 | 向板主反映這篇文章 | 顯示 IP

o919576356 已離線! Old Post 11-27-2004 02:23
點選這裡查看 o919576356 的個人檔案 點選這裡寄送 Email 給 o919576356 按這裡傳送悄悄話給 o919576356 按這裡搜尋 o919576356 所發表的文章 按這裡將 o919576356 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

blueshine
高級會員


註冊日期: Sep 2003
來自: 板橋
發表文章數: 656

code:


for (ia=0;ia<25;ia++)
{
ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
a[ia]=ch-'0';
else
break;
}


你在這邊就會把一個浮點數的"整數部分"和"小數部分"當成兩個數了
先想想ch == '.'的case應該怎麼處理



---------------------------------------------------------- 簽名列 -----------

文章編號:6 | 向板主反映這篇文章 | 顯示 IP

blueshine 已離線! Old Post 11-27-2004 08:23
點選這裡查看 blueshine 的個人檔案 點選這裡寄送 Email 給 blueshine 按這裡傳送悄悄話給 blueshine 參觀 blueshine 的個人首頁! 按這裡搜尋 blueshine 所發表的文章 按這裡將 blueshine 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

o919576356
新進會員


註冊日期: Nov 2004
來自:
發表文章數: 9

大大~我還是想不出來~改了還是有問題!
可以在提示我ㄇ?
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
char ch='0';
int a[25]={0},ia=0,pa=0;
int b[25]={0},ib=0,pb=0;
int s[26]={0},is=0;
int da=0,db=0,carry=0;
int shift_digi;
// suppose a number is beginned with non-zero digit
printf("Insert First Number : ");
for (ia=0;ia<25;ia++)
{
if ((ia == 20) && (pa == 0))
{
pa = ia;
printf("%c", '.');
}

ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
a[ia]=ch-'0';
else if ((ch == '.') && (pa == 0))
{
pa = ia;
ia--;
}
else
break;
}

printf("\n");
ch='0';

printf("Insert Second Number : ");
for (ib=0;ib<25;ib++)
{
if ((ib == 20) && (pb == 0))
{
pb = ib;
printf("%c", '.');
}

ch=getch();
printf("%c",ch);
if ( (ch>='0') && (ch <='9'))
b[ib]=ch-'0';
else if ((ch == '.') && (pb == 0))
{
pb = ib;
ib--;
}
else
break;
}

printf("\n");

if (pa == 0)
pa = ia;
if (pb == 0)
pb = ib;

if (pa > pb)
{
shift_digi = pa - pb;
for (db = ib; db > 0; db--)
{
if ((db+shift_digi) <= 25)
b[db+shift_digi] = b[db];
}

for (db = 0; db < shift_digi; db++)
b[db] = 0;
ib += shift_digi;
}
else if (pa < pb)
{
shift_digi = pb - pa;
for (da = ia; da > 0; da--)
{
if ((da+shift_digi) <= 25)
a[da+shift_digi] = a[da];
}

for (da = 0; da < shift_digi; da++)
a[da] = 0;
ia += shift_digi;
}
/* */
for (da = 0; da < 20; da++)
printf("%d", a[da]);
printf("\n");
for (db = 0; db < 20; db++)
printf("%d", b[db]);
printf("\n");
/* */
carry=0;
da=0;
db=0;
for (is=25;is>=0;is--)
{
da = a[is];
db = b[is];
s[is]=(da+db+carry)%10;
carry=(da+db+carry)/10;
}
is++;
printf(" The Answer Is : ");
for (;is<26;is++)
{
if (is == (pa>pb ? pa: pb))
printf("%c", '.');
printf("%d",s[is]);
}

printf("\n");
ch = getch();
//system("PAUSE");
return 0;
}

文章編號:7 | 向板主反映這篇文章 | 顯示 IP

o919576356 已離線! Old Post 11-27-2004 15:45
點選這裡查看 o919576356 的個人檔案 點選這裡寄送 Email 給 o919576356 按這裡傳送悄悄話給 o919576356 按這裡搜尋 o919576356 所發表的文章 按這裡將 o919576356 加入你的好友名單 回應這篇文章含引言 按這裡編輯或刪除文章

目前使用的時域為(台北時間),現在時間是 20:29 。    發表新的文章     回覆文章
上一篇主題   下一篇主題
友善列印 | 把這一篇寄給好朋友! | 訂閱這個主題

跳至:
評分主題:
 

討論區權限說明:
不可以 發表新文章
不可以 回覆文章
不可以 上傳附加檔案
不可以 修改你發表的文章
HTML code 目前狀態是 關閉
vB code 目前狀態是 開啟
表情符號 目前狀態是 開啟
[IMG] code 目前狀態是 開啟



< 聯絡我們 - 小紅帽全球資訊網 >

中文化:第一版 by Eric 第二版 by Jolin 於 小紅帽全球資訊網
(版權所有,翻拷必究)
小紅帽技術論壇創立於 2000/09/15 ,使用 vBulletin 合法註冊版權