Помогите решить проблему с выходом за пределы массива
В одномерном массиве, состоящем из 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;)