int b;
int array[12];
cout << "Enter binary number: ";
cin >> b;
(例如:B將被10100)如何將輸入存儲到數組中? C++
**如何B(10100)存儲到一個數組,使得它會是[1] [0] [1] [0] [ 0] **
cout << array[0] << endl;
**輸出應爲1 **
cout << array[1] << endl;
**輸出應爲0 **
請幫忙,謝謝。
int b;
int array[12];
cout << "Enter binary number: ";
cin >> b;
(例如:B將被10100)如何將輸入存儲到數組中? C++
**如何B(10100)存儲到一個數組,使得它會是[1] [0] [1] [0] [ 0] **
cout << array[0] << endl;
**輸出應爲1 **
cout << array[1] << endl;
**輸出應爲0 **
請幫忙,謝謝。
A string
也可以被當作char
的數組。所以你可以輸入一個字符串,而你寫的cout
聲明應該可以工作。然而,他們將char
秒且不整數,所以你會被存儲「1」和「0」,而不是1和0之間的轉換很容易,只要使用array[0]-'0'
#include <string>
#include <iostream>
using namespace std;
int main()
{
string array;
cout << "Enter binary number: "; cin >> array;
// Suppose the user inputs 10100
cout << array[0] << endl; // outputs '1'
cout << array[1] << endl; // outputs '0'
cout << array[2] << endl; // outputs '1'
return 0;
}
更新:新增可編譯的代碼。請注意,除了輸入string
之外,這幾乎是與問題一起發佈的原始代碼。
您可以使用動態靴子bitset的
#include "boost/dynamic_bitset.hpp"
#include <sstream>
#include <iostream>
int main()
{
boost::dynamic_bitset<> val;
std::stringstream input("1010101010");
input >> val; // Input a binary number
// Can use std::cin or another stream
std::cout << val.to_ulong() << "\n";
std::cout << val[5] << "\n";
}
如果沒有提振使用std :: bitset的。
性病唯一的問題:: BitSet中有固定的大小
#include <bitset>
#include <sstream>
#include <iostream>
int main()
{
std::bitset<16> val; // fixed 16 bit size
std::cout << "Enter binary number:\n";
std::cin >> val; // Input a binary number
// Can use std::cin or another stream
std::cout << val.to_ulong() << "\n";
std::cout << val[5] << "\n";
}
嘿,我得到了一大堆的錯誤與你的代碼:/ – Junior89
@ Junior89:那麼你做錯了什麼。你能更具體一點嗎?注意:它使用boost(這是您在編譯器之後立即安裝的C++程序中的一個)。如果你沒有提升或者沒有設置包含路徑來提升,那麼它將無法編譯。 –
@ Junior89:查看std :: bitset版本 –
我原本寫了類似巴勃羅一個答案,但看到他已經貼吧,這裏是給定信息的一個更一致。
需要輸入int
並將其放入int array
。
#include <iostream>
#include <cmath>
int main()
{
int b;
int numDigits;
// Get bit string int
std::cin >> b;
// Get the number of digits
numDigits = std::floor(std::log10((float)std::abs(b != 0 ? b : 1))) + 1;
// Dynamically create a new array of the appropriate size
int* arr = new int[ numDigits ];
// Initialize all the blocks of memory
std::memset(arr, 0, numDigits);
// Fill the array
for(int i = 0; i < numDigits; i++)
{
arr[ numDigits - i - 1 ] = b % 10;
b /= 10;
}
system("PAUSE");
// Delete the array
delete [] arr;
return 0;
}
這一個動態地設置數組的大小,使它正確適合。
以下示例根據需要將位存儲到原始C風格的數組。但是如果你願意的話,你可以用std :: vector替換它。
int main()
{
// assume sizeof(int) is 32, or you can use heap-allocated array or std::vector
int array[32];
unsigned int mask = 1;
// mask is initially 0x80000000
mask = mask << (sizeof(int)*8 - 1);
int i = 0;
// we start counting from the first "1",
// preceding "0"s are ignored to display
bool started = false;
int b;
cin >> b;
while (mask != 0)
{
// if current bit is "1" or "0"
if (mask & b)
{
started = true;
array[i++] = 1;
}
// if current bit is "0" and counting started
else if (started)
{
array[i++] = 0;
}
// ready to test next bit
mask = mask >> 1;
}
// test result
for (int j = 0; j < i; ++j) cout << array[j];
cout << endl;
return 0;
}
Test cases:
1. b = 8 => array: 1000
2. b = -8 => array: 11111111111111111111111111111000
3. ..
存儲二進制數到一個數組
char binaryArray [5]; // The array looks like this: [][][][][]
cout << "Enter binary number: ";
cin >> binaryArray; // Stores the binary number into the array: [1][0][1][0][0]
cout << binaryArray[0] << endl; // The first element is sent to standard output.
cout << binaryArray[1] << endl; // The second element is sent to standard output.
您的輸入輸出將是:
1
0
在這裏我們有一個字符數組。我們將二進制數輸入到數組中,然後打印數組中的每個元素以顯示每一位。第一條打印線訪問第一個元素[1] [0] [1] [0] [0]。第二條打印線訪問第二個元素[1] [0] [1] [0] [0]。
假設我們有一個包含100個字符的二進制數字。我們輸出數組的每個元素的方式需要很長時間。
1.)你能想出一個更有效的方法來打印出我們陣列的內容嗎?
2.)我們如何確保用戶只輸入一個和/或零?
這是一種功課嗎? –
沒有作業,但需要解決的問題,所以在學期開始時我不會在課堂上掙扎。 – Junior89
@Kit Ho,以及作爲軟件工程師,您是否編程和/或使用C++? – Junior89