Другие языки программирования и технологии

программирование C++. Помогите найти ошибку

здравствуйте, помогите найти ошибку в программе.
#include

using namespace std;

int main()
{ int n;
int a[n];
int i;
i=0;
int q;
q=0;
int l;
l=1;
int w;
w=1000;
cin>>n;
while(i>a[i];
i++;
}
i=0;
if(a[i]==a[++i]){
i++;
}
q=a[i];
while(i<=n-1){
if(a[i]<=a[++i]) {
q=q+a[++i];
l++;
}
else{
q=q+a[++i];
l++;
if((q=3)){
w=q;
}
q=a[++i];
l=1;
}
i++;
}
cout<<w<<endl;
Для пополнения бюджета в стране Авалон, известной своими горными
туристическими маршрутами, ввели новый налог для туристов. Величина налога
пропорциональна длине маршрута, но, поскольку маршрут проходит по горам и пройденное
расстояние, зависящее от высоты спуска и подъёма, подсчитать сложно, налог считается без
учёта высоты, то есть величина налога пропорциональна горизонтальному перемещению,
совершённому туристической группой. Кроме того, в силу старинного обычая все
туристические группы должны перемещаться по горам Авалона строго с запада на восток.
Турфирма хочет сэкономить на налоге, поэтому она хочет разработать туристический
маршрут с минимальной величиной налога. При этом, поскольку маршрут является горным,
он должен содержать подъём в гору и спуск с горы, то есть на маршруте должна быть точка,
которая находится строго выше начала и конца маршрута.
Турфирма составила карту гор Авалона, содержащую информацию о высоте гор при
передвижении с запада на восток. Высоты гор измерены в точках через равные расстояния.
Найдите на данной карте гор Авалона туристический маршрут минимальной длины,
удовлетворяющий условию наличия подъёма и спуска.
Первая строка входных данных содержит число N – количество точек на карте гор
Авалона. Следующие N строк содержат информацию о высоте гор в данных N точках при
движении с запада на восток. Все числа натуральные, не превосходящие 105
.
Программа должна вывести два числа – номер точки начала маршрута и номер точки
окончания маршрута. Точки нумеруются от 1 до N. Если маршрута, удовлетворяющего
условиям, не существует, программа должна вывести одно число 0.

Но у нас задача заключается в том что бы найти само кратчайшее растояние.
Например всего гор 6
2
4
5
2
3
8
Вывести программа должна число 13 но пргорамма всегда выводит число W то есть 1000. Не понимаю почему по мне так программа должна работать исправно.
Откуда взялось 13, если кратчайший (как сказано в твоём тексте) маршрут, удовлетворяющий условиям: 4-5-2?

Представленный тобой код вообще компилироваться не будет - хотя бы из-за while(i>a[i];

Из явных ошибок: вместо if((q=3)){ должно быть if (q == 3) {
Ilyas Babayev
Ilyas Babayev
70 894
Лучший ответ
Ошибки такие. Совершенно нечитаемый код. Переменные определены раньше использования. Имя переменной должно полностью отражать ее назначение. Нет комментариев что происходит. Неверное использование инкремента i так что непонятно что должно произойти
бред какой-то
Джон G
Джон G
25 445
I tried to read the question, but the translation software can not accurately translate, so I can not provide answers, Sorry.But I can tell you why the program shows w=1000.

w is initialized to 1000 in the main function.the“}”of the main function appears before the while and for loops.It means that the“w " in the while and for loop is not the same variable as the“w”in the main function.the “w” in while and for loop is a local variable, after the end of the loop is recycled, your operation is invalid.

There are many logical errors in your program.
eg: int n;
int a[n];

These problems are caused by the lack of basic knowledge, it is recommended to read a book and then do the problem.

Because of the fear of translation into Russian will be wrong, so only translated into English.
Hope it helps you