誰能幫我寫或矯正我的C++

2009-10-19 6:51 am
我們老師要我們用C++寫一個程式

讓使用扯輸入一個二進位數字(例如11101)

並轉換成相對應的十進位數字

高手能貼你的語法上來嗎

或者糾正我的雨法錯誤








以下是我寫的程式

#include <iostream>
using std::cout;
using std::cin;
#include <cmath>
double c=0.0;
int number;
double F=0;

int main()
{std::cout<< "請輸入一個由和組成的數字";
std::cin>>number;
for (int b=0;c<=number;)
{c=pow(10.0,b);
b=b+1;}
#include <math.h>
double b=log10(c);
F=number/c*pow(2.0,b);
for (int d=number%static_cast<int>(c);c>=1;)
{F=F+d/(c/10)*pow(2.0,b-1);
c=c/10;
b=b-1;
d=d%static_cast<int>(c);


cout<<F<<std::endl;}

return 0; }

回答 (3)

2009-10-25 2:06 am
✔ 最佳答案
//Visual Studio
//Headers and Macros
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <Windows.h>

#define BUFFER_SIZE 256

using namespace std;

class CHomework
{
public:
CHomework()
{
FreeConsole();
this->ClassMain();
}
void ClassMain(void)
{
wcscpy( this->TEXT, L"請輸入二進制值");
int nRET = ::MessageBox( NULL, this->TEXT, L"輸入", MB_OKCANCEL | MB_ICONQUESTION);
if ( nRET == IDCANCEL )
{
return;
}
AllocConsole();
cout<<"Binary = ", cin>>this->STRING;
FreeConsole();
bool bRET = this->check(this->STRING);
if ( ! bRET )
{
return;
}
_itow( this->decimal(this->STRING), this->TEXT, 10);
::MessageBox( NULL, this->TEXT, L"答案", MB_OK | MB_ICONINFORMATION);
}
bool check( const char* STRING)
{
for ( int i = 0; i < (int)strlen(STRING); i ++)
{
if ( (STRING[i] > '1') || (STRING[i] < '0') )
{
return false;
}
}
return true;
}
int decimal( char* STRING)
{
char Buffer[BUFFER_SIZE];
strcpy( Buffer, strrev(STRING));
int nRET = 0;
for ( int i = 0; i < (int)strlen(Buffer); i ++)
{
nRET += (int)(Buffer[i] - '0') * pow( 2.0, i);
}
return nRET;
}
protected:
private:
wchar_t TEXT[BUFFER_SIZE];
char STRING[BUFFER_SIZE];
};

//Main Function
void main(int argc, char** argv)
{
//==START==//
CHomework ch;
//==END==//
//system("PAUSE");
return;
}
2009-10-20 4:39 pm
讓使用『扯』輸入...高手能貼你的『語法』上來嗎

可! 先付上美金五千萬,高手就會貼上語法!


這年頭的高手怎麼比ㄌㄨˊ 斃強颱還ㄌㄨˊ啊!




ㄌㄨˊ完了,該〝進貢〞一點!
* pow(2., 整數)
別這樣用!
快改用斯斯! // 檢舉! 有人打廣告!

不是,是改用 * (1 << 整數)
2009-10-19 11:22 am
#include &lt;vcl.h&gt;
#include &lt;iostream.h&gt;
#include &lt;math.h&gt;
int main()
{

int c=0;
int number;
double F=0;

cout&lt;&lt; &quot;請輸入一個由和組成的數字&quot;;
cin&gt;&gt;number;
for(int b=0;c&lt;=number;b++)
c=pow(10.0,b);

double b=log10(c);
for (int d=number%static_cast&lt;int&gt;(c);c&gt;1;)
{
F=F+d/(c/10)*pow(2.0,b-1);
c=c/10;
b=b-1;
d=d%static_cast&lt;int&gt;(c);
}
cout&lt;&lt;F&lt;&lt;endl;
system(&quot;pause&quot;);
return 0;
}


這是我幫你修正的,你比較看看吧


收錄日期: 2021-04-28 23:08:59
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20091018000016KK09956

檢視 Wayback Machine 備份