我在运行程序时在控制台中遇到分段错误 我正在使用ubuntu(linux)中的代码块
它编译0错误和0警告
在pastebin中的代码 http://pastebin.com/wgSHPQjc
这是代码
#include <iostream>
#include <string>
using namespace std;
class Year
{
public:
Year(string sone, string stwo, string sthree, string sfour, string sfive, string ssix, string sseven, string seight) // constructor
{
subjectName[0] = sone;
subjectName[1] = stwo;
subjectName[2] = sthree;
subjectName[3] = sfour;
subjectName[4] = sfive;
subjectName[5] = ssix;
subjectName[6] = sseven;
subjectName[7] = seight;
sum = 0;
percentage = 0;
}
void nameOfSem(string semName) // semster name
{
name = semName;
cout << "Enter your " << name << " marks"<< endl;
}
//no of subjects in semster and store marks in an array
void readMarks(int noOfSubjects)
{
subjects = noOfSubjects;
for(int i=0; i<subjects; i++)
{
cout << subjectName[i]; // print out subject name stored in the array
cin >> yearName[i]; // input from keyboard of marks
// while loop so that user enters marks from 0 to 100
while (yearName[i]<0 || yearName[i] > 100 )
{
cout << "incorrect input please enter again: ";
cin >> yearName[i];
}
}
}
// function for calculating avarage
void avarage()
{
for(int j=0; j<subjects; j++) // addtion of marks (addtion of array)
{
sum += yearName[j];
}
cout << "the total is : " << sum << endl;
percentage = float(sum) / float(subjects);
cout << "The percentage is : " << percentage << endl;
}
int sum; // for storing sum of marks
string name; // for storing name of the semister
int subjects; // for storing number of subjects in semister
float percentage; // calculating percentage in the sem
int yearName[]; // array for string marks
string subjectName[]; // array for storin g subject names
};
// main function
int main()
{
cout << "Welcome to xxx uni " << endl;
// constructor for storing subjects name in the array
Year first("Appiled Physics ", "Electronic Devices circuits ", "Basic electrical Engineering ", "C & Data Structures", "English ", "Mathematical Methods ", "mathematics 1 ", "Engineering Drawing ");
// name of the sem
first.nameOfSem("First Year");
//no of subjects and storing marks in the array
first.readMarks(8);
//calculating avarage
first.avarage();
/*
Year two( " " , " ", " ")
second year object
*/
return 0;
}
答案 0 :(得分:4)
int yearName[]; // array for string marks
string subjectName[]; // array for storin g subject names
如果您的编译器符合标准,则不应编译这两行。
使用std::vector
:
std::vector<int> yearName;
std::vector<string> subjectName;
然后使用push_back
函数向其中添加元素。
Year(string sone, string stwo, string sthree, /*...*/)
{
subjectName.push_back(sone);
subjectName.push_back(stwo);
subjectName.push_back(sthree);
//so on
}