Tôi chỉ có một câu hỏi đơn giản về mảng trong CXóa các phần tử khỏi mảng trong C
Cách tốt nhất để loại bỏ các phần tử khỏi mảng là gì và làm cho mảng nhỏ hơn.
tức là mảng có kích thước n, sau đó tôi lấy các phần tử ra khỏi mảng và sau đó mảng tăng lên nhỏ hơn theo số lượng mà tôi đã loại bỏ.
về cơ bản tôi đang xử lý mảng giống như một cỗ bài và một khi tôi lấy thẻ ra khỏi boong tàu, nó không còn ở đó nữa.
EDIT: Tôi sẽ lái xe bản thân mình điên trước khi kết thúc ngày, cảm ơn tất cả sự giúp đỡ Tôi đang cố gắng trao đổi giá trị điều nhưng nó không hoạt động đúng.
#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;
}
Nếu bạn thực sự muốn nó 'phát triển nhỏ hơn', hãy triển khai danh sách được liên kết. Nếu không, làm một số trao đổi giá trị và giữ một giá trị bảo vệ 'kết thúc mảng' trong mảng của bạn. Bạn không thể chỉ đơn giản là loại bỏ một phần tử từ một mảng thường xuyên –
Sự cân bằng hiệu suất là khủng khiếp nếu bạn định chuyển đổi hoặc ghi nhớ mỗi khi bạn thay đổi mảng của mình. –
Bỏ qua những người đồng tính - memcpy là con đường để đi. (Mặc dù nếu bạn đang thực sự lấy "một thẻ ra khỏi đầu" sau đó chỉ cần sử dụng một ngăn xếp đơn giản - làm cho "đầu" cuối của mảng, và giảm giá trị cho biết chiều dài của nó với mỗi "pop" của "ngăn xếp ".) –