Powiększanie tablicy dynamicznej - C

0

Witam! Mam problem z napisaniem programu, którego funkcja

int* dodaj(int* tab, int rozmiar, int nowy_elem)

miałaby powiększać tablice dynamiczną o jeden element, nie moge używać funkcji realloc(). Natomiast w main() ta funkcja miałaby być wywołana 10 razy w celu utworzenia tablicy 10-cio elementowej. Do tej pory napisałem tylko przydzielenie pamięci dla tab.... zwyczajnie nie mam pomysłu jak sie do tego zabrać... :/ #include <stdio.h>
#include <stdlib.h>

int* dodaj(int tab, int rozmiar, int nowy_elem)
{
tab=(int
)malloc(n*sizeof(int));
}
int main()
{
int tab=NULL;
int i;
for(i=0;i<10;i++){
tab=add(tab, i, 3
i);
printf("%d \t", tab);
} printf("\n");
free(tab);
system("PAUSE");
return 0;
}

 Wskaźnik na powiększaną tablice jest ustawiony na NULL gdyż tak zostało nam narzucone. Bardzo prosze o pomoc w napisaniu działającego programu. Z góry dziękuje.
2

Zaalokuj więcej miejsca, przenieś dane, zwolnij starą pamięć

0

C realloc

int main()
{
	int *tab = NULL;
	tab = (int*)malloc(5 * sizeof(int));
	for (int i = 0; i < 5; ++i){
		tab[i] = i + 1;
	}
	for (int i = 0; i < 5; ++i){
		printf("%i ", tab[i]);
	} 
	tab = (int*)realloc(tab, 10 * sizeof(int));
	for (int i = 0; i < 10; ++i){
		tab[i] = i * 4;
	}
	for (int i = 0; i < 10; ++i){
		printf("%i ", tab[i]);
	}
	free(tab);

	system("PAUSE");
	return 0;
} 
0

nie moge używać funkcji realloc()
To też nam narzucił profesor.

1
 int* add(int *tab, int size, int new_value)
{
	int* temp = (int*)malloc(size * sizeof(int));
	for (int i = 0; i < size - 1; i++){
		temp[i] = tab[i];
	}
	temp[size - 1] = new_value;
	free(tab);
	return temp;
}
int main()
{
	int *tab = NULL;
	int i;
	for (i = 0; i < 10; i++){
		tab = add(tab, i + 1, 3 * i);
	}
	for (int i = 0; i < 10; i++){
		printf("%i ", tab[i]);
	}
	printf("\n");
	free(tab);
	system("PAUSE");
	return 0;
}

Mam nadzieję, że czytelnie. Nie siedzę w C.

0

Okej, wszystko śmiga, musiałem tylko

int i;

wynieść poza pętle. Zostało jeszcze przeanalizowanie kodu. Dziękuje bardzo za pomoc!

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