2016-03-12 65 views
0

我希望爲讀取變量輸出不同的字符串。例如,下面,我希望打印在讀取之前輸入英文標記英文標記使用eng.setmarks()。請建議一種方法來實現這一點。打印讀取不同對象變量的不同字符串

這裏是我的代碼:(看下面循環)

#include <iostream> 
#include <cstring> 

using std::cin; 
using std::cout; 

class student { 
    char name[20]; 
    int age; 

    class marks { 
     int marks; 
     public: 
      void setmarks(int x) { 
       marks = x; 
      } 
      int getmarks() { 
       return marks; 
      } 
    }; 

    public: 
     marks eng, math, phy, chem, cs; // nested objects are public 

     void setname(char* n) { 
      strncpy(name, n, 20); 
     } 
     char* getname() { 
      return name; 
     } 
     void setage(int a) { 
      age = a; 
     } 
     float total() { 
      size_t total = eng.getmarks() + math.getmarks() + 
      phy.getmarks() + chem.getmarks() + cs.getmarks(); 

      return total/500.0; 
     } 
}; 

int main() {a 
    student new_stud; 


    char temp[20]; 

    cout << "Enter name: "; 
    cin >> temp; 
    cin.get(temp, sizeof(temp)); 
    new_stud.setname(temp); 

    int age; 

    cout << "Enter age: "; 
    cin >> age; 
    new_stud.setage(age); 

    for(size_t i = 0; i < 5; ++i) { 
     // I wish to output: "Enter marks in" + subject_name, but harcoding it seems tedious 
    } 

    cout << "\nTotal Percentage: " << new_stud.total(); 

    return 0; 
} 
+0

對不起,我不明白你在問什麼?你能否更精確地闡述它。 – surajsn

+0

我的意思是這些單詞不會被寫入,例如當我閱讀不同的主題標記時,我必須明確地寫出*「輸入英文標記:」並閱讀標記。所以如果沒有科目很大,那就成了頭痛的問題。我認爲** Marci **已經給出了很好的解決方案! – samjoe

回答

1

所以,如果我理解正確的話,你想打印出你將要讀入變量的名稱。現在,這不能在你想要的方式上完成。你可以做的最好的事情是創建一個主題名稱數組和一個標記數組。

string[5] Subjects = {"Maths", "English", "Chemistry", "Physiscs", "Computer Sciences"}; 
marks[5] Marks; 
for(int i=0;i<5;i++) { 
    cout << "Please enter marks in " << Subjects[i] << ":" << endl; 
    int a; 
    cin >> a; 
    Marks[i].setmarks(a); 
} 

您也可以使馬克類有一個字段主題名稱,並給它一個函數inputfromuser(),就像這樣:

class marks { 
    int marks; 
    string subjectName; 
    public: 
    void setmarks(int x) { 
    marks = x; 
    } 
    int getmarks() { 
    return marks; 
    } 
    void inputfromuser() { 
    cout << "Please enter marks in " << subjectName << ":" << endl; 
    cin >> marks; 
    } 
}; 

對不起使用我的std ::字符串類型,我對生成的char []處理文本的方式不太舒服。

+0

我認爲這是唯一的方法,非常感謝你! – samjoe

相關問題