przesunięcie elementu tablicy char o jedno pole wyżej.

0

Witam,
na początku chciałbym powiedzieć, że jestem początkujący w Cpp. Piszę w nim od koło roku wyłączne na potrzeby szkolne tzn. konkursy, algorytmika itp. Od dłuższego czasu (ok. 2,5 roku) siedzę hobbystycznie w PHP gdzie znacznie lepiej się ogarniam. Jak wiadomo w PHP nie trzeba martwić się o typy zmiennych, referencje i tego typu rzeczy. I z tego właśnie powodu mam małe opory z pewnym programem w Cpp, dlatego też przychodzę prosić o małą pomoc. Na pewno dla osób znających choćby podstawy jest to błachostka ;)

Ale przejdźmy do rzeczy. Napisałem sobie taką o to funkcję mającą na celu przesunąć mi tablicę dwuwymiarową char o jeden element wyżej w pierwszym poziomie, jednak kompilator(Dev-C++) ma małe opory z przepuszczeniem mi przypisania jednego elementu tablicy do drugiego. Otrzymuję błąd

ISO C++ forbids assignment of arrays

Kod funkcji:

char tab1[151][201];
char przesun(char tab[151][201], int od, int doo)
{
       for(int i=doo; i>od; i--)
       {
               tab[i+1] = tab[i];
       }
       return tab;
}
void main()
{
       tab1 = przesun(tab1, 0, i); //przykładowe użycie
}
0

Nie rozumiem, czy chcesz przesunąć jeden element, czy całe wiersze tablicy dwuwymiarowej, ale próbujesz to drugie.
Nie da się tak tego zrobić. Trzeba kopiować w pętli poszczególne elementy.

0

Wielkie dzięki za odpowiedź, no więc stworzyłem zmienną pomocniczą. Próbuję przypisać do niej element tablicy tab ale teraz w tej linijce wywala mi błąd.

char przesun(char tab[151][201], int od, int doo)
{
       char pomoc[201];
       for(int i=doo; i>od; i--)
       {
               pomoc = tab[i];
               tab[i+1] = pomoc;
       }
       return tab;
}
0

O ile dobrze zrozumiałem o co ci chodzi:

void przesun(char tab[151][201],int od,int doo)
  {
   for(int i=doo;i>od;--i) memcpy(tab[i+1],tab[i],201);
  }
0

Dzięki, właśnie o to mi chodziło ;)

0

Hej,
zamiast wymyślać, zawsze można użyć czegoś z STL
http://www.cplusplus.com/reference/algorithm/rotate/

pozdro

0

Ja to by ją dynamicznie zaalokował i przesuwał wskaźniki ;)

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