#4228: 不知錯在哪= =a??


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d380. 10106 - Product -- UVa10106 | From: [122.116.13.123] | 發表日期 : 2010-09-11 18:51

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i<len1;i++)
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i<len2;i++)
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i<len1;i++)
             {
                     for(int j=0;j<len2;j++,position++)
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i<position;i++)   // 判斷數字是否有大於等於10
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}

 
#4229: Re:不知錯在哪= =a??


leopan0922 (zz)

學校 : 臺北市立成功高級中學
編號 : 6612
來源 : [140.113.225.106]
最後登入時間 :
2016-08-15 15:44:07
d380. 10106 - Product -- UVa10106 | From: [219.70.171.51] | 發表日期 : 2010-09-11 21:43

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少?? 
#4230: Re:不知錯在哪= =a??


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d380. 10106 - Product -- UVa10106 | From: [122.116.13.125] | 發表日期 : 2010-09-11 21:51

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少??

不好意思!!因為放上來時不小心動到

 int position; --->  int  position=0;

 
#4231: Re:不知錯在哪= =a??


leopan0922 (zz)

學校 : 臺北市立成功高級中學
編號 : 6612
來源 : [140.113.225.106]
最後登入時間 :
2016-08-15 15:44:07
d380. 10106 - Product -- UVa10106 | From: [219.70.171.51] | 發表日期 : 2010-09-11 22:51

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少??

不好意思!!因為放上來時不小心動到

 int position; --->  int  position=0;

你這樣他不會存到他應該到的位置吧...
 
#4233: Re:不知錯在哪= =a??


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d380. 10106 - Product -- UVa10106 | From: [122.116.13.123] | 發表日期 : 2010-09-11 22:59

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少??

不好意思!!因為放上來時不小心動到

 int position; --->  int  position=0;

你這樣他不會存到他應該到的位置吧...


不好意思!! 還是不懂Q_Q...

為什麼不會存到它應該到的位置??

可以說清楚一點嗎?!  感恩Q_Q

 
#4234: Re:不知錯在哪= =a??


leopan0922 (zz)

學校 : 臺北市立成功高級中學
編號 : 6612
來源 : [140.113.225.106]
最後登入時間 :
2016-08-15 15:44:07
d380. 10106 - Product -- UVa10106 | From: [219.70.171.51] | 發表日期 : 2010-09-11 23:05

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少??

不好意思!!因為放上來時不小心動到

 int position; --->  int  position=0;

你這樣他不會存到他應該到的位置吧...


不好意思!! 還是不懂Q_Q...

為什麼不會存到它應該到的位置??

可以說清楚一點嗎?!  感恩Q_Q

就是temp1[i]*temp2[j]應該要加在temp3[i+j]上
 
#4235: Re:不知錯在哪= =a??


popular10347 (ICPC// 哪時能唸到高等演算法T^T)

學校 : 元智大學
編號 : 11351
來源 : [1.169.118.99]
最後登入時間 :
2012-10-29 00:22:54
d380. 10106 - Product -- UVa10106 | From: [122.116.13.125] | 發表日期 : 2010-09-11 23:33

不知道底程式碼哪裡有錯了?!

麻煩大大幫忙看一下,糾正一下我錯在哪

看了很久還是找不出來= =

謝謝!!

#include
#include
using namespace std;

int main()
{
       char number1[300];
       char number2[300];

       while(cin >> number1 >> number2)
       {
              int temp1[300]={0};           // 先宣告兩個int陣列用來儲存輸入的數字
              int temp2[300]={0};
  
              int len1=strlen(number1);
              for(int i=0;i
                     temp1[i]=number1[len1-1-i]-48;       // 儲存方式為reverse
  

              int len2=strlen(number2);
              for(int i=0;i
                     temp2[i]=number2[len2-1-i]-48;      // 儲存方式為reverse

              int temp3[300]={0};     // 用來儲存兩者計算完後的數字
              int position;   
              for(int i=0;i
             {
                     for(int j=0;j
                             temp3[position]+=temp1[i]*temp2[j];    
   
              }
  
             int carry;  // 進位
             for(int i=0;i
            {
   
                    carry=temp3[i]/10;    // 判斷進位的數字
                    temp3[i+1]+=carry;   // 在下一位數加上進位的數字
                    temp3[i]%=10;  

                   if(carry != 0 && i+1 == position)  // 若是在temp1的最後一位數*temp2的最後一位數有要進位的話,則位數+1

                                                                                                                  
                           position++;
            }

           for(int i=position-1;i>=0;i--)
                    cout << temp3[i];
           cout <<  endl;
 }

 return 0;
}


你是不是沒定義position是多少??

不好意思!!因為放上來時不小心動到

 int position; --->  int  position=0;

你這樣他不會存到他應該到的位置吧...


不好意思!! 還是不懂Q_Q...

為什麼不會存到它應該到的位置??

可以說清楚一點嗎?!  感恩Q_Q

就是temp1[i]*temp2[j]應該要加在temp3[i+j]上


恩...可是,position在第一層迴圈實有把i指定給position

後面position都會在第二層迴圈++呢!!

這種跟i+j不同意思嗎?!

另外,我剛剛把我原本po的程式碼放在編譯器裡,發現怪怪的= =

好像是我放上去之後有動到程式碼吧== 不好意思喔!!

我在po一次,這個是上傳的程式碼,這次我不動它了!!

至於position沒有宣告初始值是因為在第一層迴圈內有宣告

再次說聲抱歉!!

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
 char number1[300];
 char number2[300];

 while(cin >> number1 >> number2)
 {
  int temp1[300]={0};
  int temp2[300]={0};
  
  int len1=strlen(number1);
  for(int i=0;i<len1;i++)
   temp1[i]=number1[len1-1-i]-48;
  int len2=strlen(number2);
  for(int i=0;i<len2;i++)
   temp2[i]=number2[len2-1-i]-48;

  int temp3[300]={0};
  int position;
  for(int i=0;i<len1;i++)
  {
   position=i;
   int carry;
   for(int j=0;j<len2;j++,position++)
    temp3[position]+=temp1[i]*temp2[j];
   
  }
  
  int carry;
  for(int i=0;i<position;i++)
  {
   
   carry=temp3[i]/10;
   temp3[i+1]+=carry;
   temp3[i]%=10;

   if(carry != 0 && i+1 == position)
    position++;
  }

  for(int i=position-1;i>=0;i--)
   cout << temp3[i];
  cout <<  endl;
 }

 return 0;
}

 
ZeroJudge Forum