如何在 Arduino 中创建重复多次相同元素的数组?
How to Create an Array with Same Element repeated multiple times in Arduino?
**array=[symbol,count,symbol,count.....]
for eg: array=[3,2,5,4..]
new_array=[3,3,5,5,5,5...]**
int array[]={25,6,10,2,4,3,9,5};
int value1[16]={0};
Serial.print("\n RLE decoded");
for(i=0;i<len;i++)
{
if(i%2==0)
{
value[i] = array[i];
i=i+1;
count=array[i];
}
for(j=0; j<count;j++)
{
Serial.print(value[i]);
Serial.print('\t');
}
如何在Arduino中创建重复多次相同元素的数组?
这段代码工作正常,我们能够重复打印符号,但这段代码的问题是 :: 重复的值没有存储到新数组中。我们尝试声明一个新数组来存储重复的值,但它不起作用!!
数组是相同元素的集合,但是symbol和count显然是不同的东西。为了将不同的事物组合在一起,struct
是在 C
的早期发明的
struct {char symbol; byte count;} input[] = {
{'a', 2}, {'X' ,3} ,{'!', 1}
};
const byte inputcount = sizeof(input)/sizeof(input[0]); // 3 in this test
char expanded[20]; // will get the result
void setup() {
Serial.begin(9600);
char* resultpos = expanded;
for (auto& elem:input) {
for (byte p = 0; p < elem.count; p++) {
*resultpos++ = elem.symbol;
}
}
*resultpos = 0; // to make it a printable char array
Serial.println(expanded); // should give "aaXXX!"
}
void loop() {}
如果愿意,您也可以使用经典类型的 for 循环。但是这个 for each
真的很好,IMO。
**array=[symbol,count,symbol,count.....]
for eg: array=[3,2,5,4..]
new_array=[3,3,5,5,5,5...]**
int array[]={25,6,10,2,4,3,9,5};
int value1[16]={0};
Serial.print("\n RLE decoded");
for(i=0;i<len;i++)
{
if(i%2==0)
{
value[i] = array[i];
i=i+1;
count=array[i];
}
for(j=0; j<count;j++)
{
Serial.print(value[i]);
Serial.print('\t');
}
如何在Arduino中创建重复多次相同元素的数组? 这段代码工作正常,我们能够重复打印符号,但这段代码的问题是 :: 重复的值没有存储到新数组中。我们尝试声明一个新数组来存储重复的值,但它不起作用!!
数组是相同元素的集合,但是symbol和count显然是不同的东西。为了将不同的事物组合在一起,struct
是在 C
struct {char symbol; byte count;} input[] = {
{'a', 2}, {'X' ,3} ,{'!', 1}
};
const byte inputcount = sizeof(input)/sizeof(input[0]); // 3 in this test
char expanded[20]; // will get the result
void setup() {
Serial.begin(9600);
char* resultpos = expanded;
for (auto& elem:input) {
for (byte p = 0; p < elem.count; p++) {
*resultpos++ = elem.symbol;
}
}
*resultpos = 0; // to make it a printable char array
Serial.println(expanded); // should give "aaXXX!"
}
void loop() {}
如果愿意,您也可以使用经典类型的 for 循环。但是这个 for each
真的很好,IMO。