C++二进制条形码赋值

C++ Binary Bar Code Assignment

本文关键字:赋值 条形码 二进制 C++      更新时间:2023-10-16

我正在学习计算机科学和使用C++的入门课程。

我们的任务是创建不同的"条形码扫描仪"——二进制,代码39和代码48。这是二进制部分的代码,其中条形码由交替的黑白条纹组成,其中每个条纹要么宽要么窄。宽条形表示为1,窄条形表示为0。

任务的指导方针是:

  • 读取表示代码中条形数的数字b(奇数整数1≤b≤21)
  • 读取b个字符,每次一个
  • 每个字符要么是w表示宽,要么是n表示窄
  • 宽条形为1,窄条形为0
  • 将条形码转换为等效数字并显示数字

我觉得我的代码还可以,但它不会返回超过6位数的任何内容。如果我将b输入为7到21之间的任何值,它仍然要求输入那么多整数,但只打印其中的6个。

谢谢你的帮助!

#include <iostream>
using namespace std;
int main(){
int b; //number of bars
int i = 0; //loop variables
int k = 0;
int l = 0;
cout << "Number of bars in code (between 1 and 21): " ;
cin >> b;
char arraychars[b]; //barcode as w's and n's
int arrayint[b]; //whole barcode as ints
while (b <= 21 && b >= 1) //b is in range
{
    for (i=0; i<b; i++)
    {
        cout << "Enter character (w for wide, n for narrow): " << endl;
        cin >> arraychars[i];
    }
    for (k=0; k<b; k++)
    {
        if (arraychars[k] == 'w')
            arrayint[k] = 1;
        else if (arraychars[k] == 'n')
            arrayint[k] = 0;
        else
            break;
    }
    for (l=0; l<b; l++) //prints
        cout << arrayint[l] ;
        break; //exits loop
}
return 0;
}

main()的前两行应该已经发出了大量警告。重点是C++中的数组是静态大小的,在这里,您创建了一个数组,其大小由以前未初始化的b的值决定。天知道编译器是怎么做的。将其替换为std::vectorstd::string

您必须在"int b;"之后声明您的数组;

int b; //number of bars
int i = 0; //loop variables
int k = 0;
int l = 0;
cout << "Number of bars in code (between 1 and 21): " ;
cin >> b;
char *arraychars = new char[b]; //barcode as w's and n's
int *arrayint = new int[b]; //whole barcode as ints
while (b <= 21 && b >= 1) //b is in range
{
    for (i=0; i<b; i++)
    {
        cout << "Enter character (w for wide, n for narrow): " << endl;
        cin >> arraychars[i];
    }
    for (k=0; k<b; k++)
    {
        if (arraychars[k] == 'w')
            arrayint[k] = 1;
        else if (arraychars[k] == 'n')
            arrayint[k] = 0;
        else
            break;
    }
    for (l=0; l<b; l++) //prints
        cout << arrayint[l] ;
        break; //exits loop
}
return 0;
}

否则,您的变量b取值不明确。

你不知道数组的大小