#10379: C++求助 自己試都可以 丟上來只有CE


40475027H (盧岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑岑...)

學校 : 國立臺灣師範大學
編號 : 53192
來源 : [101.10.46.162]
最後登入時間 :
2021-06-02 10:25:19
a010. 因數分解 | From: [140.122.38.97] | 發表日期 : 2015-10-23 02:29

#include<iostream>

using namespace std;
int main()
{
    int a ,b;
    int i ,j;
    while(cin >> a)
    {
    b = a;
    int base[a]={0},index[a]={0};               //宣告底數 指數
   
    for(i=2 ; i<a ; i++)
    {
        if ( a % i == 0 )
        {
            base[i]= base[i]+1;
            for ( j=0 ; a%i==0 ; j++ )
            {
                if( a % i == 0 )
                {
                    if (a==i)
                    {index[i]++;goto end;}
                    else
                    {a /= i;
                    index[i] = index[i]+1;}
                   
                }
            }           
        }
        else;       
    }
    if(a==1)
    {
       
    }
   
   
    base[a] ++;
    index[a] ++;
   
    end:
   
    for (i=1;i<a;i++)
    {
        if (base[i])
        {
        if (index[i]==1)
        {cout<<i<<"*";}
        else
        {cout << i << "^"<< index[i] << "*" ;}
        }
        }
   
    if (index[a]==1)
    cout<<a<<endl;
    else
    cout<<a<<"^"<<index[a]<<endl;   
    }
   
   
   
   
    return 0;
   
 }

 

 

第 1 測資點(100%): CE ()
編譯錯誤

/code_2522198.cpp: In function ‘int main()’:
/code_2522198.cpp:12:16: error: variable-sized object ‘base’ may not be initialized
/code_2522198.cpp:12:29: error: variable-sized object ‘index’ may not be initialized

 
#10399: Re:C++求助 自己試都可以 丟上來只有CE


idreamer (dreamer)

學校 : 不指定學校
編號 : 27623
來源 : [163.21.49.253]
最後登入時間 :
2024-11-15 15:23:23
a010. 因數分解 | From: [118.163.33.31] | 發表日期 : 2015-10-29 09:19

/code_2522198.cpp:12:16: error: variable-sized object ‘base’ may not be initialized
/code_2522198.cpp:12:29: error: variable-sized object ‘index’ may not be initialized

這兩行就把原因都說了啊。

宣告陣列的時候,陣列的長度不可以是「變數」。

 int base[a]={0},index[a]={0};               //宣告底數 指數 

你的 a 是一個整數變數,不是常數。

若真的需要長度不固定的陣列,可以改用 STL 裡的 vector 或自行以 new / delete 來配置記憶體。

 

 
 
ZeroJudge Forum