【问题标题】:How to Create an Array with Same Element repeated multiple times in Arduino? [closed]如何在 Arduino 中创建具有相同元素多次重复的数组? [关闭]
【发布时间】:2020-02-20 06:53:21
【问题描述】:
**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 中创建具有相同元素多次重复的数组? 此代码工作正常,我们能够重复打印符号,但此代码的问题是 :: 重复的值没有存储到新数组中。我们尝试声明一个新数组来存储重复值,但它不起作用!!

【问题讨论】:

  • 请不要重复自己,而是描述您所展示的代码所遇到的问题以及您对这些问题的看法。请花点时间阅读How to Ask,以及this question checklist
  • 您需要独立跟踪value数组中的位置,因为它与输入array中的位置不同。

标签: c++ c arduino arduino-uno arduino-c++


【解决方案1】:

数组是相同元素的集合,但符号和计数显然是不同的东西。为了将不同的东西组合在一起,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。

【讨论】:

  • 尚未检查展开的足够大小!
猜你喜欢
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 2023-04-07
  • 2017-05-12
相关资源
最近更新 更多