Как вы добавляете значения в список, а затем перебираете списки?

Я пытаюсь написать базовую программу для своего TI-84, которая находит площадь многоугольников на двумерной плоскости. Для справки, я много раз писал это на питоне, вот что он делает:

x_list,y_list,verts,tot_1,tot_2=[],[],int(input("How many vertices are on the polygon: ")),0,0 //sets vars to defaults and gets num of vertices
for i in range(verts): //gets X and Y values of each point for num. of vertices
    x_list.append(float(input("X value of point %s: " % str(i+1)))) //appends x value given to x list
    y_list.append(float(input("Y value of point %s: " % str(i+1))))  //appends y value given to y list
for ind in range(verts-1):
    tot_1 += (x_list[ind]*y_list[ind+1])-(y_list[ind]*x_list[ind+1]) 
print(str(abs((tot_1)/2))) //prints area: abs value of total over two

это просто делает очень простой алгоритм, также показанный здесь в обычной математике: .html

теперь, когда я пытаюсь написать то же самое на TI-Basic (используя приложение TI Connect и отправляя на калькулятор), он возвращает синтаксическую ошибку при первом обращении к одному из списков; «Проверить все введенные аргументы». Строка обведена звездочками. комментарии не в самом коде

ClrHome //clears screen
Prompt V //gets number of vertices
0→T //sets total to 0
Disp V //displays vertices, was used for testing
For(N,1,V,1) //runs code for number of vertices
Input "x val: ",X //gets latest x val
Input "y val: ",Y //gets latest y val
**X→L1(1+dim(L1))**  //appends x to listand 
Y→L2(1+dim(L2))      //y to list
End //end for

For(I,1,P,1)
T+((L1(I)*L2(I+1))-(L2(I)*L1(I+1))→T //adds up total
End

Disp abs(T/2)

при изменении кода на калькуляторе путем замены L1 на символ list1 и L2 на символ list2 все, что он сделал, это вернуло значение 12,5 * количество вершин-2. Мои вопросы:

  1. Как я могу представить списки в коде на компьютере? Когда я пишу L1 в коде, я думаю, что на самом деле это не встроенная переменная списка, и это вызывает синтаксическую ошибку. Я думаю.
  2. Нужно ли сбрасывать переменные списка? В самый первый раз, когда я тестировал это, 12.5*vertices-2 работало, поэтому он просто навсегда установил переменные списка на это, и теперь, когда он добавляет что-то в список в более поздних запусках программы, он никогда не достигает этих индексов?
  3. Есть ли в коде недостатки, из-за которых он вообще не работает? Я совершенно новичок в TI-Basic.

person toads_tf    schedule 21.08.2016    source источник


Ответы (2)


понял, я тупой.

Во-первых, использовались переменные списка, указанные в справочнике по синтаксису в ti-connect.

Во-вторых, алгоритм во втором цикле for был неправильным.

person toads_tf    schedule 21.08.2016

  1. Используйте клавишу 2ND для ввода переменных списка.

  2. Чтобы сбросить список, есть два способа: вставьте DelVar L1 в конце вашей программы, чтобы удалить переменную (DelVar находится в меню PRGM), или, если вы хотите сохранить переменную, но все же удалить содержимое, вы можете очистить список в начале вашей программы, установив его размер равным нулю с помощью 0→dim(L1) (dim( находится в меню LIST). Также хорошей практикой является заставить программу очищаться после себя и удалять ненужные переменные после запуска.

  3. Похоже, вы сами разобрались с алгоритмом.

Добро пожаловать в TI-BASIC!

person user3932000    schedule 03.09.2016