Beste tweakers,
Op het moment ben ik bezig met een opdracht voor school. Hierbij moet er een Dynamish Array aangemaakt worden van een struct. Dit lukt, het toevoegen ook en het printen van alles dat erin zit ook. Alleen als ik een plek uit het array wil verwijderen, lukt het niet. Ik heb heel veel gezocht op google, maar kwam nergers erachter hoe het moet. Deze opdracht is nog maar een oefening, kijken of het verwijderen lukt.
Ik heb een struct, waarin 1 int zit. Deze zet ik in een Dynamisch Array met realloc. Via een menu kan ik steeds kiezen of ik een toevoeg, verwijder, print of exit wil doen.
Ik wil het volgende voor elkaar krijgen. Ik wil 3 int hebben met bepaalde waardes en print dat dan bijvoorbeeld zo:
Op plek 1 staat 1.
Op plek 2 staat 2.
Op plek 3 staat 3.
Dan wil ik met de functie free() het getal 2 verwijderen. Hierdoor wil ik het volgende krijgen:
Op plek 1 staat 1.
Op plek 3 staat 3. (Of moet dat dan plek 2 zijn?)
Dus hoe kan ik met free() nou 1 plaats verwijderen, ipv het gehele Dynamische Array? En verschuift het Array dan als ik iets verwijder dat er bijv in het midden zit?
Hier is wat uit mijn code.
Struct:
Variabelen:
Het dynamisch array uitbreiden met 1.
Het verwijderen van een plek van het Dynamische Array:
Dan nog het printen:
Alvast bedankt!
Op het moment ben ik bezig met een opdracht voor school. Hierbij moet er een Dynamish Array aangemaakt worden van een struct. Dit lukt, het toevoegen ook en het printen van alles dat erin zit ook. Alleen als ik een plek uit het array wil verwijderen, lukt het niet. Ik heb heel veel gezocht op google, maar kwam nergers erachter hoe het moet. Deze opdracht is nog maar een oefening, kijken of het verwijderen lukt.
Ik heb een struct, waarin 1 int zit. Deze zet ik in een Dynamisch Array met realloc. Via een menu kan ik steeds kiezen of ik een toevoeg, verwijder, print of exit wil doen.
Ik wil het volgende voor elkaar krijgen. Ik wil 3 int hebben met bepaalde waardes en print dat dan bijvoorbeeld zo:
Op plek 1 staat 1.
Op plek 2 staat 2.
Op plek 3 staat 3.
Dan wil ik met de functie free() het getal 2 verwijderen. Hierdoor wil ik het volgende krijgen:
Op plek 1 staat 1.
Op plek 3 staat 3. (Of moet dat dan plek 2 zijn?)
Dus hoe kan ik met free() nou 1 plaats verwijderen, ipv het gehele Dynamische Array? En verschuift het Array dan als ik iets verwijder dat er bijv in het midden zit?
Hier is wat uit mijn code.
Struct:
code:
1
2
3
4
| struct number { int test; }; |
Variabelen:
code:
1
2
3
4
5
6
| number *test; number *test2 = NULL; number *verwijder = NULL; int keuze; int invoer; int totaal = 0; |
Het dynamisch array uitbreiden met 1.
code:
1
2
3
4
5
6
7
8
| printf("\nVoer waarde in: "); scanf("%i", &invoer); totaal++; test = (number *)realloc(test2, totaal * sizeof(number)); test2 = test; test[totaal - 1].test = invoer; |
Het verwijderen van een plek van het Dynamische Array:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| printf("\nWelk getal wilt u verwijderen?"); scanf("%i", &invoer); for(int i = 0; i < totaal; i++) { if(invoer == test[i].test) { verwijder = &test[i]; free(verwijder); verwijder = NULL; } } totaal = totaal - 1; |
Dan nog het printen:
code:
1
2
3
4
| for(int i = 0; i < totaal; i++) { printf("\nHet nummer op plek %i is %i.", i + 1, test[i]); } |
Alvast bedankt!