我正在尝试为我的计算类中的项目创建一个二进制到十进制的转换器,并且我的代码出现了这个错误:"NameError:name'z'未定义"我查找了答案,他们修复了一个错误但是给出了另一个.这是代码:
bd = input("""
Would you like to convert a number into:
a) Binary to Decimal
b) Decimal to Binary
""")
if bd == 'a':
answer = input("""
Please enter a Binary number. Up to, and including, 8 digits of 1 and 0
""")
z += 2
for i in range(8):
if answer [ i ] == '1':
answer += 1*z**i
Run Code Online (Sandbox Code Playgroud)
非常感谢任何帮助!
大多数答案仅针对已经回答的有关汉明重量的问题,但忽略了关于find稀疏性的观点.显然,通过夏嘉曦答案在这里解决了约找到一点-但我现在还无法验证它.我在这里的答案并没有利用其他答案的独创性,比如位移,但足够好的例子答案.
输入
>> mlf=sparse([],[],[],2^31+1,1);mlf(1)=10;mlf(10)=111;mlf(77)=1010;
>> transpose(dec2bin(find(mlf)))
ans =
001
000
000
011
001
010
101
Run Code Online (Sandbox Code Playgroud)
目标
1
0
0
2
1
1
2
Run Code Online (Sandbox Code Playgroud)
使用稀疏结构快速计算二进制数的1?
在学校,我们正在学习如何在Visual Studio中使用c ++中的二进制文件.这段代码在Visual Studio 2005中完美运行,但在2010 - 2013版本中却没有.它给出了读取违规错误.所以我希望你们中的一个可以帮助我,因为即使我的老师也不知道什么是错的:(错误发生在阅读结束时.我尝试了不同的ifstream和ofstream方法,但没有成功.
我的代码:
#include <z:/Yoshi On My Mac/Google Drive/School/2013-2014/C-taal/headeryoshi.h>
#define B "z:/Yoshi On My Mac/Google Drive/city.dat"
typedef struct city {
string zip, name;
};
void add() {
ofstream file;
city city;
titelscherm("ADD CITY");
cout << "ZIP: ";
getline(cin, city.zip);
while (city.zip not_eq "0") {
cout << "Name: ";
getline(cin, city.name);
file.open(B, ios::app | ios::binary);
file.write((char*)&city, sizeof(city));
file.close();
titelscherm("ADD CITY");
cout << "POSTCODE: ";
getline(cin, city.zip);
}
cout << "city: ";
file.close();
}
void read() { …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个将ASCii字符串文本转换为二进制数字的项目,但我遇到了几个问题.首先,我想确切地知道如何从字符串中获取单个数字并打印出它的二进制后代,其次,应用此方法的最佳方法是什么?谢谢
我需要找到一种有效的算法,找到一组最佳二进制向量,使得每个索引都有一个在该集合中至少有一个向量中设置的位.
有趣的动机:我想闯入一座城堡并偷走它的宝藏.为了做到这一点,我必须解锁4扇门:蓝色的门,红色的门,黄色和绿色.有3个矮人,每个人都有一套不同的钥匙.矮人1有:蓝键和红键.矮人2有:红色键和黄色键.矮人3有:蓝色键和绿色键.我想杀死最少量的矮人以进入城堡.所以在这种情况下,很明显我们应该只杀死矮人2和矮人3来获得所有的钥匙,并且不需要杀死矮人1.
一般来说,我们有n个大小为m(n dwarfs和m门)的二进制向量:a0,a1 ...... a(n-1).我们需要一组向量,使得向量中的每个索引至少有一个键.如果a1 [5] = 1,那么我们知道第二个向量中的第6位被置位.意思是矮人#2有关键#6.开头的例子实际上是这样的:a0(1,1,0,0)a1(0,1,1,0)a2(1,0,0,1)所以我们选择向量:a1,a2得到完全覆盖最小向量.
蛮力天真算法是尝试每个选项,然后以最少量的向量返回解,但由于有n个向量,因此有2 ^ n个选项.
接下来我想到了一个贪婪的算法,每次都使用大多数键的向量.但这是一个反例,证明这种方法是错误的:
使用此算法,我们将选择所有4个向量,但最优解只有3个向量{a1,a2,a3}.
现在,我想到了另一种贪婪的算法,我们选择具有最罕见密钥的向量(如果是平局,我们搜索下一个稀有密钥等等),但是我再次找到了一个反例:
在这个例子中,所有索引都具有相同的"稀有性"(2),所以我们最终选择a0虽然a0(例如{a0,a1,a2,a3})至少有4个向量并且最优解是只有3 {a1,a2,a3}.
我想也许如果我将消除作为另一个向量的子集的向量(例如a6是a3的子集),那么这个算法可能会起作用,但即便如此,检查这将花费n!.
我希望你能帮我找到一个有效的算法,或者帮助我证明这种算法不存在.
甚至问这个我感到很尴尬,但是因为某种原因python让我的错误给了我"l"
def binary_search(l, targetValue):
low = 0, high = len(array)
while low <= high:
mid = (high - low)/2
if l[mid] == targetValue:
return "we found it!"
elif l[mid] > targetValue:
low = mid - 1;
else l[mid] < targetValue: #this line seems to be the problem
high = mid + 1;
print "search failure :( "
Run Code Online (Sandbox Code Playgroud) 好的,我已经将一个基本的二进制转换器变成了十进制,我正在尝试验证用户输入,因此它只能是0或1,这在第一次工作正常,如果他们输入的值不正确它要求他们重新输入它,但是如果他们第二次输入错误值就会出现问题,我怎么会碰巧解决这个问题呢?或者喜欢将它循环回程序的特定部分?非常感谢,这是我的代码:
if (iBinaryNum1 == 1 || iBinaryNum1 == 0)
{
Console.WriteLine("The binary value entered for integer 1 is correct");
}
else
{
Console.WriteLine("The binary value entered for integer 1 is incorrect");
Console.WriteLine("Please Re-enter this value");
iBinaryNum1 = Convert.ToInt32(Console.ReadLine());
}
Run Code Online (Sandbox Code Playgroud) 这是我的代码的一部分,我被指示编写一个接受二进制数字作为字符串的程序,如果1的总数是2,则只会显示"已接受".还有更多内容,但是要进入现在计算1的是我的问题.如果有人能指出我的错误方向,那将是非常感激的.
import java.util.Scanner;
public class BinaryNumber
{
public static void main( String [] args )
{
Scanner scan = new Scanner(System.in);
String input;
int count = 0;
System.out.print( "Enter a binary number > ");
input = scan.nextLine( );
for ( int i = 0; i <= input.length()-1; i++)
{
char c = input.charAt(i);
if ((c == '1') && (c == '0'))
if (c == '1')
{count++;}
if (count == 2)
{System.out.println( "Accepted" );
}
if (count != 2)
{System.out.println( "Rejected" …Run Code Online (Sandbox Code Playgroud) 所以我有以下测试Go代码,它设计用于通过stdin读取二进制文件,并将读取的数据发送到通道,然后进一步处理.在我在这里给出的版本中,它只从stdin中读取前两个值,尽管就显示问题而言这很好.
package main
import (
"fmt"
"io"
"os"
)
func input(dc chan []byte) {
data := make([]byte, 2)
var err error
var n int
for err != io.EOF {
n, err = os.Stdin.Read(data)
if n > 0 {
dc <- data[0:n]
}
}
}
func main() {
dc := make(chan []byte, 1)
go input(dc)
fmt.Println(<-dc)
}
Run Code Online (Sandbox Code Playgroud)
为了测试它,我首先使用go build构建它,然后使用命令向它发送数据 -
./inputtest < data.bin
Run Code Online (Sandbox Code Playgroud)
我目前用来测试的数据只是使用openssl命令创建的随机二进制数据.
我遇到的问题是它错过了Stdin的第一个值,只给出了第二个和更大的值.我认为这与通道有关,因为移除通道的相同脚本会生成正确的数据.有没有人遇到过这个?例如,运行此命令时,我得到以下输出 -
./inputtest < data.bin
[36 181]
Run Code Online (Sandbox Code Playgroud)
我应该得到 -
./inputtest < data.bin
[72 218]
Run Code Online (Sandbox Code Playgroud)
(二进制数据在两个实例中都是相同的.)
程序"随机"选择一组8个数字,然后用户必须尽可能多地猜测这些数字.但即使我输入这个随机数组中的数字,binary_search函数也找不到"随机"数字数组中的确切数字.我似乎无法在我的binary_search函数中找到错误(至少我怀疑那就是问题所在).我已经尝试过大数字大小的程序.有人可以帮帮我吗?
#define SIZE 3
#define min 1
#define max 36
int random();
bool binary_search(int value, int values[], int n);
int main(void)
{
int numbers[SIZE];
for(int i = 0; i < SIZE; i++)
numbers[i] = random();
int score = 0;
int n[SIZE];
int number_user;
for(int i = 0; i < SIZE; i++)
{
//Type in a number
do
{
printf("Search number no.%d:\n> ", i + 1);
n[i] = GetInt();
//Wrong input number
if(n[i] < min || n[i] > max)
{
printf("\nNumber …Run Code Online (Sandbox Code Playgroud)