dodanie nowego elementu do tablicy

0

Witam wszystkich forumowiczów.! :)

Mam pytanie jak dodać pierwszy element do tablicy, żeby nie stracić pozostałych elementow, tzn nie nadpisać elementu na pozycji 0. Chodzi mi o to jak przesunąć elementy tablicy tak, żeby wcisnąć na pozycję 0 nowy element. Do tej pory napisałem taki kod, ktory zmienia indeksowanie elementow tab.

for(k=l=nk;k>=0;k--){
wyn[++l]=wyn[k];
l--;
wyn[0]=1;}
}

Zmienia sie indeksowanie, ale nie zmienia się ilośc elementow w tablicy. Jak zmienić kod?

Dziękuję z gory za pomoc:)

0
#define SIZE 20
int main(int argc, char *argv[]) 
{
   char *tablica;
   tablica = malloc(SIZE);
  /*potem mozesz sobie na tym operowac*/
}

Albo skorzystaj z klasy vector.

0

Pamiętaj, że jeżeli chcesz dodać nowy element to tablica musi mieć odpowiednio większy rozmiar(jeżeli tworzona statycznie). Przykład:

#include<iostream>
using namespace std;
const int TAB_SIZE = 10;
int main(){
	char Tab[TAB_SIZE] = {'a','b','c','d','e'};
	for(int j = TAB_SIZE - 1;j >= 0;j--)
		Tab[j] = Tab[j-1];
		//element Tab[0] można zastąpić(jego wartość przyjął element Tab[1])
	getchar();
	return 0;
}
0

Tak, tak pamiętam. Rozmiar tablicy jest spory. Jest ona zdefiniowana statycznie, ale spełnia to wymagania. wyn[10000] elementów.

0

Dodam jeszcze, że tablica jest typem tablicy jest char na początku, ale potem zamieniam elementy tab na "inty",żeby zrealizować dodawanie (wyn[] jest tablicą wynikową). Nie wiem czy ma to jakieś znaczenie przy tego typu operacji....

Chodzi o to, że napisałem kod, który dodaje cyfry do siebie realizując przeniesienie do następnego "słupka" jak w dodawaniu pisemnym. Kiedy jednak składniki sumy są takiej samej długości i z ostatniej pozycji (zerowy element tablicy wyn[]) pojawi się przeniesienie to nie ma gdzie go dodać, bo nie ma elementu, który byłby na pozycji "-1". Chciałem, przesunąć elementy tab w prawo i wcisnąć to przeniesienie na poz z indeksem "0".Ma ktoś jakiś pomysł?

0
if(trzeba_wolne_miejscie_na_przeniesienie) {
   for(int i = 0; i < rozmiar; i++) {
      tablica[i] = tablica[i+1]
   }
}

Tak moglbys np zrobic, ale jesli nie sprawdzisz czy tablica[i] oraz nastepne elemnty sa rowne zero to bedziesz mial tablica[rozmiar - 1] rowne nie wiadomo co.

0

zatem muszę wyzerować elementy tablicy...

Dzięki za pomoc:)

0

Nie zeruj elementow tablicy tylko za pomoca petli przesuwaj je dalej do napotkania konca liczby, jesli dobrze zrozumialem ze to ma byc po prostu dodawanie pod kreska, a w przypadku gdy liczba konczy sie w ostatnim elemncie tablicy, to bedziesz musial ja zwiekszyc, wiec odpadaja statyczne tablice, chyba ze jestes pewny ze tak duzych liczb nie bedzie, zeby wypelnialy cala zadeklarowana tablice.

0
if(trzeba_wolne_miejscie_na_przeniesienie) {
   for(int i = 0; i < rozmiar; i++) {
      tablica[i] = tablica[i+1]
   }tablica[0]=1;
}

Zmodyfikowałem kod na taki jak powyżej z małą modyfikacją, która dodaje ma pierwszy z lewej element tablicy (indeks 0) wartość przeniesienia i niestety nie skutkuje..:( Zachowuje się jakby pożerało mi gdzieś 1 element tablicy zamiast dodawać. Np 9999+9999=198.</quote>

0

Zamieszalem troche ;)
Powinno byc tablica[i+1] = tablica[i].
Pomylilem strony.

0

Działa. Dzięki:)

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