Problem ze zrozumieniem polecenia z kolosa z operacji na tablicach

0

siema wszystkim :)
Nie rozumiem co mam zrobić. Wykładowca nie podał żadnego przykładowego rozwiązania...

Zakładajac, ze tablica zawiera tylko elementy binarne, zaprojektowac funkcje,
która wykonuje działanie ExOR (suma modulo 2) dla kazdego i-tego
elementu w taki sposób, ze wartosc i-tego elementu ma byc okreslona przez
działanie ExOR dla tego i-tego elementu oraz elementów bezposrednio z
nim sasiadujacych (i-1-ego i i+1-ego). Uwzglednic, ze ostatni element tablicy
jest sasiedni w stosunku do pierwszego i vice versa.

static void doExORTable ( int [ ] binaryTable );
0
using System;

class Program
{
  public static void doExORTable ( int [ ] binaryTable )
  {
    int length = binaryTable.Length;
    int [] newTable = new int[length];
    for(int i=0;i<length;i++)
    {
      if(i==0)
      {
        newTable[i] = (binaryTable[i] + binaryTable[i + 1] + binaryTable[length-1]) % 2;
      }
      else if(i==length-1)
      {
        newTable[i] = (binaryTable[i] + binaryTable[i - 1] + binaryTable[0]) % 2;
      }
      else
      {
        newTable[i] = (binaryTable[i] + binaryTable[i-1] + binaryTable[i+1]) % 2;
      }
    }
    
    for(int i=0;i<length;i++)
    {
      binaryTable[i] = newTable[i];
    }
  }
  
  public static void Main()
  {
    int [] tab = new int[]{1,0,1,1,0,1,0,0};
    doExORTable(tab);
    
    foreach(int val in tab)
    {
      Console.WriteLine(val);
    }
    
  }
}

nie wiem czy dobrze

1
  1. xor to ^
  2. Cykliczność można załatwić przez operacje % n z indeksami.

Idea jest taka że twoja funkcja ma zrobić tab[i] = tab[i-1]^tab[i]^tab[i+1], przy czym zakładamy, że przesuwa sie cyklicznie, czyli np. tab[-1] == tab[n-1] i tab[n] == tab[0]

0

dzięki wielkie za pomoc :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1