내 작업은 pseudodatabase를 C++로 만드는 것이 었습니다. 세 가지 테이블이 있습니다. 저장소 이름 (char *), 나이 (int) 및 섹스 (bool)입니다.
- 테이블에 새로운 데이터를 추가
- 기준 정렬 테이블 - 모든 기록을
을 보여줍니다 : 할 수 있도록하는 프로그램을 작성 -
/감소 명 증가 -
섹스C++에서 간단한 'database'
증가/감소
함수 템플릿 사용은 필수입니다. 또한 배열의 크기는 레코드의 양에 따라 가변적이어야합니다.
코드가 있지만 문제가 여전히 있습니다. 다음은 내가 가지고있는 것입니다 : 배열의 크기를 반환하기위한 함수 tabSize(). 하지만 현재 그것은 포인터의 크기를 반환합니다.
포인터가 아닌 배열의 크기를 반환하는 방법은 무엇입니까?
다음으로 가장 중요한 요소는 새로운 요소를 추가하기위한 add()입니다. 먼저 배열의 크기를 얻습니다. (따라서 포인터의 값을 반환하고 크기가 아니라 지금은 사용하지 않습니다 : /). 그렇다면 데이터의 유형이 char인지 확인해야한다고 생각합니다. 아니면 내가 틀렸어?
// add(newElement, table)
template<typename TYPE> TYPE add(TYPE L, TYPE *T)
{
int s = tabSize(T);
//here check if TYPE = char. If yes, get the length of the new name
int len = 0;
while (L[len] != '\0') {
len++;
}
//current length of table
int tabLen = 0;
while (T[tabLen] != '\0') {
tabLen++;
}
//if TYPE is char
//if current length of table + length of new element exceeds table size create new table
if(len + tabLen > s)
{
int newLen = len + tabLen;
TYPE newTab = new [newLen];
for(int j=0; j < newLen; j++){
if(j == tabLen -1){
for(int k = 0; k < len; k++){
newTab[k] =
}
}
else {
newTab[j] = T[j];
}
}
}
//else check if tabLen + 1 is greater than s. If yes enlarge table by 1.
}
나는 여기에 맞습니까? 다음과 같은 종류의()와
template<typename TYPE> TYPE show(TYPE *L)
{
int len = 0;
while (L[len] == '\0') {
len++;
}
for(int i=0; i<len; i++)
{
cout << L[i] << endl;
}
}
와 문제는 다음과 같습니다 :
마지막 기능 같아요 (가) 올바른 표시 감소 또는 증가하고 정렬하는 경우 호는 내가 영향을 미칠 수있다? 여기 거품 정렬을 사용하고 있습니다.
template<typename TYPE> TYPE sort(TYPE *L, int sort)
{
int s = tabSize(L);
int len = 0;
while (L[len] == '\0') {
len++;
}
//add control increasing/decreasing sort
int i,j;
for(i=0;i<len;i++)
{
for(j=0;j<i;j++)
{
if(L[i]>L[j])
{
int temp=L[i];
L[i]=L[j];
L[j]=temp;
}
}
}
}
그리고 주요 기능
그것을 실행 : 당신이 배열에 터미네이터의 어떤 종류가 없다면int main()
{
int sort=0;
//0 increasing, 1 decreasing
char * name[100];
int age[10];
bool sex[10];
char c[] = "Tom";
name[0] = "John";
name[1] = "Mike";
cout << add(c, name) << endl;
system("pause");
return 0;
}
강사 (또는 TA)에게 먼저 물어 보지 않으면 할당이'char *'을 사용한다고하면 내부적으로'std :: string'으로 저장하지 않을 것입니다. 실제로 어떤 시나리오에서든'std :: string'을 사용하고 싶다면, 할당 시점의 일부는 수동 메모리 관리를 배우는 것이고, 코드를 읽고'std :: string'을 찾으면, 당신은 그것을 잃을 수도 있습니다. –