2017-10-17 70 views
-8

我是編程新手,數組很弱。這裏是編碼和問題,請告訴我,如果我做了任何錯誤,我卡在陣列部分。C++數組 - 創建一個結構員工和顯示的動態數組

Question

#include<iostream> 
#include<string> 
using namespace std; 

struct Library 
{ 
    string Name[10]; 
    int ID[10],Unit[10]; 
    double Price[10]; 
}; 

struct Library L; 
int main() 
{ 
    int book; 
    cout<<"Enter the number of book : "; 
    cin>>book; 
    for(int i=0; i<book; i++) 
    { 
    cout<<"\nBook Name : "; 
    cin>>L.Name[i]; 
    cout<<"Book ID : "; 
    cin>>L.ID[i]; 
    cout<<"Unit : "; 
    cin>>L.Unit[i]; 
    cout<<"Price : "; 
    cin>>L.Price[i];  
    } 
    cout<<"You have entered these info : "; 
    cout<<"\nName \t ID \t Unit Price"; 
    for(int i=0; i<book; i++) 
    { 
    cout<<"\n"<<L.Name[i]<<endl; cout<<"\t"<<L.ID<<"\t"<<L.Unit<<"\t"<<L.Price<<endl; 
    } 

} 
+2

你有沒有試過** **呢?它有用嗎? – Steve

+0

除了名稱全部顯示錯誤代碼(0x4a7090) – Zeshon

+0

@Zeshon我認爲它是動態分配的數組(不分配)結構類型的對象應該命名爲Library,並且結構本身應該命名爲Book。 –

回答

0

修復了你的小錯誤。動態地爲內存結構數組動態分配內存,只需1行。

試一下:https://ideone.com/5KUKkV

你把輸入的書籍號碼後,您必須這樣做:

struct Library *L = new Library[book]; 

你在你的結構訪問每個成員的方式是L[i].ID, L[i].Name等。 。

此外,您的結構成員無效。請參閱代碼的正確性。

完整代碼:

struct Library 
{ 
    string Name; 
    int ID, Unit; 
    double Price; 
}; 


int main() 
{ 

    int book; 
    cout << "Enter the number of book : "; 
    cin >> book; 

    struct Library *L = new Library[book]; 

    for (int i = 0; i<book; i++) 
    { 
     cout << "\nBook Name : "; 
     cin>>L[i].Name; 
     cout << "Book ID : "; 
     cin >> L[i].ID; 
     cout << "Unit : "; 
     cin >> L[i].Unit; 
     cout << "Price : "; 
     cin >> L[i].Price; 
    } 
    cout << "You have entered these info : "; 
    cout << "\nName \t ID \t Unit Price"; 
    for (int i = 0; i<book; i++) 
    { 
     cout << "\n" << L[i].Name << endl; cout << "\t" << L[i].ID << "\t" << L[i].Unit << "\t" << L[i].Price << endl; 
    } 

} 
0

而不是在struct,我建議該結構的陣列(如你的問題的標題和分配)陣列:

struct Library 
{ 
    string Name; 
    int ID; 
    int Unit; 
    double Price; 
}; 

如果你必須使用動態內存分配,你可以創建你的收藏爲:

Book * Collection = new Library[10]; 
0

使用結構的向量:

#include<iostream> 
#include<string> 
using namespace std; 

struct Library 
{ 
    string Name; 
    int ID,Unit; 
    double Price; 
}; 

int main() 
{ 
    vector<Library> L; 
    Library tempL; 
    int book; 
    cout<<"Enter the number of book : "; 
    cin>>book; 

    for(int i=0; i<book; i++) 
    { 
    cout<<"\nBook Name : "; 
    cin>>tempL.Name; 
    cout<<"Book ID : "; 
    cin>>tempL.ID; 
    cout<<"Unit : "; 
    cin>>tempL.Unit; 
    cout<<"Price : "; 
    cin>>tempL.Price;  
    l.push_back(tempL); 
    } 
    cout<<"You have entered these info : "; 
    cout<<"\nName \t ID \t Unit Price"; 
    for(int i=0; i<L.size(); i++) 
    { 
    cout<<"\n"<<L[i].Name<<endl; 
    cout<<"\t"<<L[i].ID<<"\t"<<L.Unit<<"\t"<<L[i].Price<<endl; 
    } 
} 
+0

太糟糕了,您的更改不符合作業的*「動態數組」*部分。這可能是關於動態內存分配的一個教訓,使用'new'和數組。 –

+0

另外,不喜歡做人的功課。相反給他們提示或引導他們。如果你做功課,他們不會學習。 –