在解題時比較難處理的是系統轉換問題, 不知各位高手有無解決方法?
系統回應是
CE ()
編譯錯誤
code_1333366.cpp: In function ‘int main()’:
code_1333366.cpp:20: error: lvalue required as left operand of assignment
程式碼在 Visual Studio 2010 C++中編譯執行是正常
#include<iostream>
#include <cmath>
using namespace std;
int main(void){
int a,b;
while( cin >>a>>b ){
if(a>b){ //數值交換,使小數在前
int temp=a;
a=b;
b=temp;
}
bool flag=0; //有否阿姆斯壯數旗標
for(int i=a;i<=b;i++){
int k=log10((float)i)+1; //取得位數
int sum=0,value=i,number;
while(value){
number=value%10; //取得每位數值
value/=10;
(int)sum+=pow(number,(float)k);
}
if(sum==i){
cout<< i<<" ";
flag=1;
}
}
if(flag==0)
cout <<"none";
cout <<endl;
}
return 0;
}
int k=log10((float)i)+1; //取得位數
int sum=0,value=i,number;
while(value){
number=value%10; //取得每位數值
value/=10;
(int)sum+=pow(number,(float)k);
}
改用 DEV C++編譯,就找到問題了,相容性問題,改成如下就OK
for(int i=a;i<=b;i++){
int p=log10((float)i)+1; //取得位數
float k=p;
int sum=0,value=i,number;
while(value){
number=value%10; //取得每位數值
value/=10;
sum+=pow(number,k);
}