mam tylko proste pytanie o tablice w CUsuwanie elementów z tablicy w C
Jaki jest najlepszy sposób, aby usunąć elementy z tablicy oraz w procesie zrobić tablica mniejsza.
to znaczy, że tablica ma rozmiar n, wtedy biorę elementy z tablicy, a wtedy tablica rośnie mniej o kwotę, z której ją usunąłem.
zasadniczo traktuję tablicę jak talię kart, a kiedy wyjmę kartę z wierzchu talii, nie powinno już tam być.
EDYCJA: Mam zamiar doprowadzać się do szału przed końcem dnia, dziękuję za wszelką pomoc, próbuję wymieniać wartości, ale to nie działa poprawnie.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
enum faces{Ace = 0, Jack = 10, Queen, King};
char * facecheck(int d);
int draw(int deck, int i);
int main()
{
int deck[52], i, n;
char suits[4][9] =
{
"Hearts",
"Diamonds",
"Clubs",
"Spades"};
n = 0;
for(i = 0; i<52; i++)
{
deck[i] = n;
n++;
};
for(i=0; i<52; i++)
{
if(i%13 == 0 || i%13 == 10 || i%13 == 11 || i%13 == 12)
printf("%s ", facecheck(i%13));
else printf("%d ", i%13+1);
printf("of %s \n", suits[i/13]);
}
draw(deck, i);
return 0;
}
char * facecheck(int d)
{
static char * face[] =
{
"Ace",
"Jack",
"Queen",
"King" };
if(d == Ace)
return face[0];
else
{
if(d == Jack)
return face[1];
else
{
if(d == Queen)
return face[2];
else
{
if(d == King)
return face[3];
}
}
}
}
int draw(int deck,int i)
{
int hand[5], j, temp[j];
for(i=0; i<52; i++)
{
j = i
};
for(i = 0; i < 5; i++)
{
deck[i] = hand[];
printf("A card has been drawn \n");
deck[i] = temp[j-1];
temp[j] = deck[i];
};
return deck;
}
Jeśli rzeczywiście chcesz, aby "pomniejszył się", zaimplementuj połączoną listę. W przeciwnym razie wykonaj jakąś zamianę wartości i zachowaj w swojej macierz wartość "końca tablicy". Nie można po prostu usunąć elementu z regularnej tablicy. –
Kompromitacja wydajności jest straszna, jeśli zamierzasz ponownie przydzielić lub zapamiętywać przy każdej zmianie tablicy. –
Zignoruj tych naysayerów - memcpy jest drogą do zrobienia. (Chociaż jeśli naprawdę bierzesz "kartę z góry", po prostu użyj zwykłego stosu - utwórz "wierzchołek" końca tablicy i zmniejsz wartość wskazującą jego długość z każdym "pop" stosu ".) –