Wpis z mikrobloga

W jaki sposób przesunąc wszystkie elementy tablicy o ile elementów w tablicy n-elementowej? Dla testów zrobiłem 5 elementową tablicę. Wszystko przesuwa się poprawnie, dopóki i nie wyleci poza zakres.

int main()
{
int n = 5;
int tab[n];
tab[0] = 5;
tab[1] = 10;
tab[2] = 15;
tab[3] = 20;
tab[4] = 25;
int ile = 3;
int i;
int pom = tab[n - 1];

for(i = n - 1; i > 0; i--)
{
tab[i] = tab[i - ile];
}

tab[0] = pom;

for(i = 0; i < n; i++)
{
printf("%d \n", tab[i]);
}
}

#jezykc #naukaprogramowania #programowanie
  • 10
@Czlowiek_Ludzki:
tabela 1 ma X elementow
tabela 2 powinna miec X + ile elementow, najpierw powinienies stworzyc nowa tablice, aby miec gdzie "poprzesuwac te dane" w innym przypadku bedziesz tracic te dane, lub wpisywac dane do pamieci, ktora nie jest zarezerwowana dla twojej tablicy
@Czlowiek_Ludzki:

Nie wiem jakie masz dokladnie oczekiwania, ale mozesz sobie to obsluzyc uzywajac dodatkowej tablicy jako tempa i memcpy:

#include

int main()
{
int n = 5;
int tab[n];
tab[0] = 5;
tab[1] = 10;
tab[2] = 15;
tab[3] = 20;
tab[4] = 25;
int ile = 3;
int i;
int pom = tab[n - 1];

int temp[n];

memcpy(temp, &tab[ile], sizeof(int)*(n-ile));

memcpy(&tab[ile-1], tab, sizeof(int)*ile);

memcpy(tab, temp, sizeof(int)*(n-ile));

for(i = 0; i