Poczekajcie.
No i mamy tablice z indeksami od zera do en , nie można jej przesunąć o ka w lewo bo pierwszy indeks byłby równy zero minus ka a ostatni en minus ka.
Widzieliście tablicę z ujemnymi indeksami?
Ja proponuje tu warunek:
Przesuwać wartości od jakiegoś miejsca (od kturegoś indeksu) na przykład igrek wiekszego od zera i mniejszego od en , przy podawaniu o ile przesunąć tablicę trzeba sprawdzić czy zadana wartośc przesunięcia te jest mniejsza równa igrek , gdy tak można kontynułować.
Albo zrobić to tak że zadajemy o ile w lewo np pieć , pięć pierwszych elementów ciągu zapisujemy w pomocniczej tablicy temp_tab, resztę zapisujemy w innej tablicy (zaczynając od indeksu zero a kończąc na indeksie en minus pięć)
(przydzielamy jej tak samo pamięć jak naszej tablicy wyjściowej czyli takim samym mallokiem) ,
póżniej zaczynając od indeksu en minus pięć wpisujemy do naszej pomocniczej tablicy zawartośc tablicy temp_tab , wypisujemy zawartośc naszej pomocniczej tablicy na ekran i co robimy? i sie cieszymy bo działa
i po wszystkim
Bedziesz mogł o 100 przesunąć w lewo gdy tylko sam do tego dojdziesz jak , podpowiedz:
sto podziel przez swoj rozmiar tablicy
(można pobawić się w przesunięcie całej tablicy w pamięci ale to chyba nie o to chodzi)
int main(){int n,i,j,k;int z =0; printf("Z ilu n elementow ma skladac sie ciag liczb (n>0): "); scanf("%d",&n);for(i=0;i<n;i++) tablica[i]=i; printf("\n\nCiag wyglada nastepujaco:\n\n");int *tablica = (int*)malloc((unsigned)n*sizeof(int));i=0;for (i=0;i<n;j++) printf("%d, ",tablica[i]); printf("\n\n\n");i=0;for(;;)/*pętla będzie sie kręcić aż poniższy warunek w ifie nie zostanie spełniony*/{printf("O ile pozycji ma nastapic przesuniecie cykliczne elementow ciagu w lewo ()); scanf("%d",&k);if(k<n)break;else { printf("nieopoprawny rozmiar przesunięcia sproboj jeszcze raz");continue; } }getch(); /*tutaj zrealizujemy przesunięcie cykliczne w lewo*/int *tab_pom = (int*)malloc((unsigned)n*sizeof(int));int *tab_temp = (int*)malloc((unsigned)k*sizeof(int));for(i=0;i<=k;i++)tab_temp[i] = tablica[i];k++;i=k;for(i=k;i<=n;i++){tab_pom[z]=tablica[i];z++;}i=k;for(i=k;i<=n;i++)tab_pom[i]=tab_temp[i];for(i=0;i<=n;i++){printf(%d,tab_pom[i]);return 0;}myśle ze powinno zadziałac ale moge sie mylić. :mur: