2013-05-17 88 views
-4

描述:編寫一個程序,該程序創建一個結構體,這些結構體的數組以及指向結構體數組中每個元素的指針數組,然後使用數據文件讀取信息的指針數組,然後打印出各種信息詳情如下指針數組顯示結構

  1. 結果將輸出到屏幕

  2. 所述數據文件具有10行,每一個的名字和年齡。

  3. 必須定義一個結構,稱爲personInfo,有2個元素

一個。稱爲名稱的字符串

b。一個叫做年齡的int

  1. 定義了一個名爲peopleInfos的數組。

  2. 限定指針數組以personInfos稱爲personPtr

  3. personPtr的元素設置爲人們的元件

    即personPtr的第一個元素的地址將是第一個元素的地址使用成員訪問運算箭頭,指針數組人

  4. ,閱讀10個姓名和年齡

  5. 顯示,使用指針陣列,姓名,年齡,指針陣列中的每個元素的地址,和地址的人數組的每個元素的

當前代碼:

#include <iostream> 
#include <fstream> 
#include <string> 
#include <iomanip> 

using namespace std; 

struct personInfos 
{ 
    string name; 
    int age; 
} people[9]; 

int main() 
{ 
    personInfos *personPtr; 
    personPtr = new personInfos[9]; 

    int i; 
    for(i=0; i<10; i++) 
    personPtr[i] = &people[i]; 

ifstream input; 
input.open("C:\\Users\\jacob\\Google Drive\\Lab9"); 

for(i=0; i<10; i++) 
{ 
    input >> personPtr[i]->name; 
    input >> personPtr[i]->age; 
} 



input.close(); 
return 0; 
} 
+3

而你的問題是什麼? 我看到的所有東西都是你的家庭作業或類似的東西......雅各布此刻你的問題是什麼? – DominikAngerer

+2

歡迎來到計算器!這看起來像一個家庭作業,而不是一個問題......你有問題嗎? – eidsonator

+0

當你編譯這段代碼時,它是否編譯沒有錯誤或警告。 – user2019047

回答

1

首先所有,雖然它看起來很聰明,但在聲明struct時從不聲明變量。這不僅令人困惑,而且在這種情況下它創建了一個全局變量(這是非常錯誤的)。此外,雖然數組元素的索引從0到9,但在聲明數組時,您必須聲明元素的數量,在本例中爲10.

第二個「personInfos * personPtr」不是數組指針,它是一個簡單的指針。要創建指針數組,請使用「personInfos * personPtr [10]」。你似乎混淆了一個事實,即一個指針可以用作一個數組,但這不是被問到的,你必須創建一個指針數組。

所以這些變化,這應該工作(現在不能測試):

#include <iostream> 
#include <fstream> 
#include <string> 
#include <iomanip> 

using namespace std; 

struct personInfos 
{ 
    string name; 
    int age; 
}; 

int main() 
{ 
    personInfos people[10]; 
    personInfos* personPtr[10]; 

    int i; 
    for(i=0; i<10; i++) 
     personPtr[i] = &people[i]; 

    ifstream input; 
    input.open("C:\\Users\\jacob\\Google Drive\\Lab9"); 

    for(i=0; i<10; i++) 
    { 
     input >> personPtr[i]->name; 
     input >> personPtr[i]->age; 
    }  

    input.close(); 
    return 0; 
} 
+0

非常感謝。我的愚蠢的錯誤。這清除了我的問題。 – thomann061