Помогите решить проблему с выходом за пределы массива
В одномерном массиве, состоящем из n
целых элементов, вычислить: количество пар x[i]
и x[i + 1]
, таких, что x[i] < x[i + 1]
.
int otvet=0;
for(i=0;i<n;i++){
if(A[i]<A[i+1]){
otvet=otvet+1;
}
}
При просмотре элементов массива происходит выход за пределы массива. На массивах небольшой размерности могут быть ошибки только в вычислении количества пар, при больших размерностях программа может некорректно заканчивать свою работу. Подскажите, как это пофиксить?
Ответы (1 шт):
Автор решения: MarianD
→ Ссылка
Элементов в массиве n
, но соседних пар только n-1
.
Значит, вместо
for(i=0;i<n;i++){
примените
for(i=0;i<n-1;i++){ // вместо n применено n-1
и таким образом вы сравните все соседние пары и A[i+1]
не выйдет за границы массива.
(Между прочим, вместо otvet=otvet+1;
красивее использовать инкремент: otvet++;
или ++otvet;
)