Привет, я программист-любитель, и, чтобы усугубить это, прошло какое-то время с тех пор, как я сделал какое-либо программирование, поэтому решил обновить свою память с помощью некоторых проблем с Topcoder. Первый, который я сделал, оказался сегментным недостатком, и сейчас я не могу понять, что я могу понять сам, может ли кто-нибудь помочь мне понять, откуда возникла ошибка сегмента. Вот код.Где ошибка сегментации в этом коде?
vector<int> Bonuses (vector<int> points)
{
int totalPoints = 0;
for (int i = 0; i != points.size(); ++i)
{
totalPoints += points[i];
}
vector<int> percentage;
int percentageLeft = 100;
int truncatedPercentage;
for (int i = 0; i != points.size(); ++i)
{
truncatedPercentage = points[i]/totalPoints;
percentage.push_back(truncatedPercentage);
percentageLeft -= truncatedPercentage;
}
for (int i = 1;i <= percentageLeft; ++i)
{
percentage[percentage.size() - i] += 1;
}
return percentage;
}
Вы нарушаете доступ к памяти, может выходить за пределы массива. – obo
Вы должны научиться использовать отладчик [GDB] (http://www.gnu.org/software/gdb/documentation/). При сбое, как и эта ошибка сегментации, отладчик поможет вам определить местоположение аварии, а также позволить вам просматривать переменные, чтобы помочь вам понять причину сбоя. –