Arduino C Multi dimensional array switching





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















Im stuck with a piece of my Arduino code



Basically I have a multi dimensional array in which every index will store a random letter. But after a small time (eg. 900 milliseconds) every value in the index will move up to the index above it. Ofcourse when the index reaches e.g. [9][0] it will go to the largest index like [9][9]



E.g.: myArray[9][8] contains "K" and myArray[9][7] contains "L"



The "K" in myArray[9][8] will be put in myArray[9][7] and the "L" in myArray[9][7] will go to myArray[9][6] etc. etc



But I have no clue how to do this in C...
myArray[9][8] = myArray[9][7] obviously wouldnt work










share|improve this question


















  • 1





    show us your code

    – H.cohen
    Jan 3 at 11:02






  • 1





    What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

    – Kamil Cuk
    Jan 3 at 11:07













  • @KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

    – Fred
    Jan 3 at 11:14


















0















Im stuck with a piece of my Arduino code



Basically I have a multi dimensional array in which every index will store a random letter. But after a small time (eg. 900 milliseconds) every value in the index will move up to the index above it. Ofcourse when the index reaches e.g. [9][0] it will go to the largest index like [9][9]



E.g.: myArray[9][8] contains "K" and myArray[9][7] contains "L"



The "K" in myArray[9][8] will be put in myArray[9][7] and the "L" in myArray[9][7] will go to myArray[9][6] etc. etc



But I have no clue how to do this in C...
myArray[9][8] = myArray[9][7] obviously wouldnt work










share|improve this question


















  • 1





    show us your code

    – H.cohen
    Jan 3 at 11:02






  • 1





    What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

    – Kamil Cuk
    Jan 3 at 11:07













  • @KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

    – Fred
    Jan 3 at 11:14














0












0








0


0






Im stuck with a piece of my Arduino code



Basically I have a multi dimensional array in which every index will store a random letter. But after a small time (eg. 900 milliseconds) every value in the index will move up to the index above it. Ofcourse when the index reaches e.g. [9][0] it will go to the largest index like [9][9]



E.g.: myArray[9][8] contains "K" and myArray[9][7] contains "L"



The "K" in myArray[9][8] will be put in myArray[9][7] and the "L" in myArray[9][7] will go to myArray[9][6] etc. etc



But I have no clue how to do this in C...
myArray[9][8] = myArray[9][7] obviously wouldnt work










share|improve this question














Im stuck with a piece of my Arduino code



Basically I have a multi dimensional array in which every index will store a random letter. But after a small time (eg. 900 milliseconds) every value in the index will move up to the index above it. Ofcourse when the index reaches e.g. [9][0] it will go to the largest index like [9][9]



E.g.: myArray[9][8] contains "K" and myArray[9][7] contains "L"



The "K" in myArray[9][8] will be put in myArray[9][7] and the "L" in myArray[9][7] will go to myArray[9][6] etc. etc



But I have no clue how to do this in C...
myArray[9][8] = myArray[9][7] obviously wouldnt work







c arrays multidimensional-array






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 10:57









Dylan HamersDylan Hamers

61




61








  • 1





    show us your code

    – H.cohen
    Jan 3 at 11:02






  • 1





    What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

    – Kamil Cuk
    Jan 3 at 11:07













  • @KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

    – Fred
    Jan 3 at 11:14














  • 1





    show us your code

    – H.cohen
    Jan 3 at 11:02






  • 1





    What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

    – Kamil Cuk
    Jan 3 at 11:07













  • @KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

    – Fred
    Jan 3 at 11:14








1




1





show us your code

– H.cohen
Jan 3 at 11:02





show us your code

– H.cohen
Jan 3 at 11:02




1




1





What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

– Kamil Cuk
Jan 3 at 11:07







What's wrong with myArray[9][8] = myArray[9][7] ? Or better with temporary variable tmp = myArray[9][0]; myArray[9][0] = ...[1]; ...[1] = ...[2]; ... ...[9] = tmp

– Kamil Cuk
Jan 3 at 11:07















@KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

– Fred
Jan 3 at 11:14





@KamilCuk I guess it moves it in the wrong direction. It would be myArray[9][7] = myArray[9][8] per the description. Generically a for loop with myArray[9][i] = myArray[9][i+1] could be used, with code to handle the wrap and a temp to store ``myArray[9][0]`.

– Fred
Jan 3 at 11:14












2 Answers
2






active

oldest

votes


















0














There is not problem with assignment, but you must save the element you are writing over first.



In this example all the rewritten values are kept in the last slot of every row, this is just an example- not the only way to go, if you need to move the letters across the rows as well the idea is similar.



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void moveLettersInRow(char sArr[3], int row)
{
int i = 0;
int j = 0;
char temp ;

for (i = 0; i < row; ++i)
{

for(j = 2 ;j > 0;--j)
{

temp = sArr[i][j-1]; /*save the value to be rewritten */
sArr[i][j-1]= sArr[i][2]; /* set the last val in its new place*/
sArr[i][2]= temp; /* set the last elem to the latest rewritten value*/

}
}

}
void printArr(char arr[3], int size)
{
int i = 0, j= 0;
for(i = 0; i< size; ++i)
{
for(j = 0; j< 3; ++j)
{
printf("%c | ", arr[i][j]);
}
printf("n");
}
}

int main()
{
char arr[2][3]= {{'a','b','c'},{'a','b','c'}};
moveLettersInRow(arr, 2);
printArr(arr, 2);
return 0;
}





share|improve this answer































    0














    There are several ways to go about this. One would be to use a temporary variable while copying, as Kami Cuk and Fred pointed out.



    Another way, which would avoid copying the values, would be to index the array using a modulo operation while reading the array.



    myArray[9][(index + offset) % numberOfElementsInArray]


    index and offset should both be positive integers.
    numberOfElementsInArray is the number of elements in myArray[9]



    To get a -1 offset with a positive integer, set offset to numberOfElementsInArray - 1






    share|improve this answer


























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54020958%2farduino-c-multi-dimensional-array-switching%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      There is not problem with assignment, but you must save the element you are writing over first.



      In this example all the rewritten values are kept in the last slot of every row, this is just an example- not the only way to go, if you need to move the letters across the rows as well the idea is similar.



      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      void moveLettersInRow(char sArr[3], int row)
      {
      int i = 0;
      int j = 0;
      char temp ;

      for (i = 0; i < row; ++i)
      {

      for(j = 2 ;j > 0;--j)
      {

      temp = sArr[i][j-1]; /*save the value to be rewritten */
      sArr[i][j-1]= sArr[i][2]; /* set the last val in its new place*/
      sArr[i][2]= temp; /* set the last elem to the latest rewritten value*/

      }
      }

      }
      void printArr(char arr[3], int size)
      {
      int i = 0, j= 0;
      for(i = 0; i< size; ++i)
      {
      for(j = 0; j< 3; ++j)
      {
      printf("%c | ", arr[i][j]);
      }
      printf("n");
      }
      }

      int main()
      {
      char arr[2][3]= {{'a','b','c'},{'a','b','c'}};
      moveLettersInRow(arr, 2);
      printArr(arr, 2);
      return 0;
      }





      share|improve this answer




























        0














        There is not problem with assignment, but you must save the element you are writing over first.



        In this example all the rewritten values are kept in the last slot of every row, this is just an example- not the only way to go, if you need to move the letters across the rows as well the idea is similar.



        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>

        void moveLettersInRow(char sArr[3], int row)
        {
        int i = 0;
        int j = 0;
        char temp ;

        for (i = 0; i < row; ++i)
        {

        for(j = 2 ;j > 0;--j)
        {

        temp = sArr[i][j-1]; /*save the value to be rewritten */
        sArr[i][j-1]= sArr[i][2]; /* set the last val in its new place*/
        sArr[i][2]= temp; /* set the last elem to the latest rewritten value*/

        }
        }

        }
        void printArr(char arr[3], int size)
        {
        int i = 0, j= 0;
        for(i = 0; i< size; ++i)
        {
        for(j = 0; j< 3; ++j)
        {
        printf("%c | ", arr[i][j]);
        }
        printf("n");
        }
        }

        int main()
        {
        char arr[2][3]= {{'a','b','c'},{'a','b','c'}};
        moveLettersInRow(arr, 2);
        printArr(arr, 2);
        return 0;
        }





        share|improve this answer


























          0












          0








          0







          There is not problem with assignment, but you must save the element you are writing over first.



          In this example all the rewritten values are kept in the last slot of every row, this is just an example- not the only way to go, if you need to move the letters across the rows as well the idea is similar.



          #include <stdio.h>
          #include <stdlib.h>
          #include <string.h>

          void moveLettersInRow(char sArr[3], int row)
          {
          int i = 0;
          int j = 0;
          char temp ;

          for (i = 0; i < row; ++i)
          {

          for(j = 2 ;j > 0;--j)
          {

          temp = sArr[i][j-1]; /*save the value to be rewritten */
          sArr[i][j-1]= sArr[i][2]; /* set the last val in its new place*/
          sArr[i][2]= temp; /* set the last elem to the latest rewritten value*/

          }
          }

          }
          void printArr(char arr[3], int size)
          {
          int i = 0, j= 0;
          for(i = 0; i< size; ++i)
          {
          for(j = 0; j< 3; ++j)
          {
          printf("%c | ", arr[i][j]);
          }
          printf("n");
          }
          }

          int main()
          {
          char arr[2][3]= {{'a','b','c'},{'a','b','c'}};
          moveLettersInRow(arr, 2);
          printArr(arr, 2);
          return 0;
          }





          share|improve this answer













          There is not problem with assignment, but you must save the element you are writing over first.



          In this example all the rewritten values are kept in the last slot of every row, this is just an example- not the only way to go, if you need to move the letters across the rows as well the idea is similar.



          #include <stdio.h>
          #include <stdlib.h>
          #include <string.h>

          void moveLettersInRow(char sArr[3], int row)
          {
          int i = 0;
          int j = 0;
          char temp ;

          for (i = 0; i < row; ++i)
          {

          for(j = 2 ;j > 0;--j)
          {

          temp = sArr[i][j-1]; /*save the value to be rewritten */
          sArr[i][j-1]= sArr[i][2]; /* set the last val in its new place*/
          sArr[i][2]= temp; /* set the last elem to the latest rewritten value*/

          }
          }

          }
          void printArr(char arr[3], int size)
          {
          int i = 0, j= 0;
          for(i = 0; i< size; ++i)
          {
          for(j = 0; j< 3; ++j)
          {
          printf("%c | ", arr[i][j]);
          }
          printf("n");
          }
          }

          int main()
          {
          char arr[2][3]= {{'a','b','c'},{'a','b','c'}};
          moveLettersInRow(arr, 2);
          printArr(arr, 2);
          return 0;
          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 3 at 12:08









          H.cohenH.cohen

          47019




          47019

























              0














              There are several ways to go about this. One would be to use a temporary variable while copying, as Kami Cuk and Fred pointed out.



              Another way, which would avoid copying the values, would be to index the array using a modulo operation while reading the array.



              myArray[9][(index + offset) % numberOfElementsInArray]


              index and offset should both be positive integers.
              numberOfElementsInArray is the number of elements in myArray[9]



              To get a -1 offset with a positive integer, set offset to numberOfElementsInArray - 1






              share|improve this answer






























                0














                There are several ways to go about this. One would be to use a temporary variable while copying, as Kami Cuk and Fred pointed out.



                Another way, which would avoid copying the values, would be to index the array using a modulo operation while reading the array.



                myArray[9][(index + offset) % numberOfElementsInArray]


                index and offset should both be positive integers.
                numberOfElementsInArray is the number of elements in myArray[9]



                To get a -1 offset with a positive integer, set offset to numberOfElementsInArray - 1






                share|improve this answer




























                  0












                  0








                  0







                  There are several ways to go about this. One would be to use a temporary variable while copying, as Kami Cuk and Fred pointed out.



                  Another way, which would avoid copying the values, would be to index the array using a modulo operation while reading the array.



                  myArray[9][(index + offset) % numberOfElementsInArray]


                  index and offset should both be positive integers.
                  numberOfElementsInArray is the number of elements in myArray[9]



                  To get a -1 offset with a positive integer, set offset to numberOfElementsInArray - 1






                  share|improve this answer















                  There are several ways to go about this. One would be to use a temporary variable while copying, as Kami Cuk and Fred pointed out.



                  Another way, which would avoid copying the values, would be to index the array using a modulo operation while reading the array.



                  myArray[9][(index + offset) % numberOfElementsInArray]


                  index and offset should both be positive integers.
                  numberOfElementsInArray is the number of elements in myArray[9]



                  To get a -1 offset with a positive integer, set offset to numberOfElementsInArray - 1







                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Jan 3 at 13:06

























                  answered Jan 3 at 11:18









                  Pärt JohansonPärt Johanson

                  871510




                  871510






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54020958%2farduino-c-multi-dimensional-array-switching%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      MongoDB - Not Authorized To Execute Command

                      How to fix TextFormField cause rebuild widget in Flutter

                      Npm cannot find a required file even through it is in the searched directory