Этот код работает нормально на моем компьютере, но SPJ сообщает мне, что он получил ошибку сегментации. Не могли бы вы помочь мне отладить его?
#include <iostream>
using namespace std;
int main() {
int i, arr[5];
int j = 0;
for (i = 0; i<5; i++)
{
cout << "Enter number between 0 to 99 \n";
cin >> arr[i]
}
while (arr[j] != 42) {
cout << arr[j] << "\n";
j++;
}
return 0;
}
Ваша петля:
while (arr[j] != 42) {
cout << arr[j] << "\n";
j++;
}
Будет только выход, если кто-то ввел 42. Если они этого не сделали, то j
будет увеличено до 5 и более, что означает, что вы попытаетесь получить доступ к индексу массива, которого не существует, поскольку arr
имеет всего 5 элементов.
Одним из исправлений будет проверка j
когда вы повторяете элементы:
while (j<5 && arr[j] != 42) {
cout << arr[j] << "\n";
j++;
}
42
.