TI-BASIC: Indexarea la comanda Prompt sau Input (Programare, Lista, Vector, Prompt, Ti Basic, N Dimensional)

ProgrammingEnthusiast a intrebat.

Am o TI-84 Plus și creez un program pentru a calcula mărimea unui vector n-dimensional. Am inclus codul meu și rezultatul acestuia mai jos.

Editor de programe:

PROGRAM:NTHDMAG
Disp "HOW MANY DIMENSIONS?"
Prompt N
{X,Y,Z,T,A,B,C,D,E,F,G,H,I,J,L,M,P,U,V,W}->L1
For(K,1,N,1)
L1(K)->Q
Prompt Q
End

Output Display:

pgrmNTHDMAG
HOW MANY DIMENSIONS?
N=?3
Q=?1
Q=?2
Q=?3
Done

Vreau ca Q-urile să fie înlocuite cu fiecare literă din L1, iar indexarea L1(K) în comanda Prompt aruncă o eroare. Valorile literelor din L1 vor fi oricare ar fi valoarea fiecărei componente (deci aici, de exemplu, 1i + 2j + 3k).

Sper că acest lucru este clar, dar sunt mai mult decât dispus să clarific dacă nu este. Vă mulțumesc pentru orice ajutor pe care îl puteți oferi!

Comentarii

  • Input permite afișarea de șiruri de caractere personalizate, dar este aceasta ceea ce aveți nevoie în primul rând? Utilizatorul ar putea introduce singur o listă cu ajutorul obișnuitului {A,B,C (acest lucru permite, de asemenea, utilizarea Rcl cu o listă existentă, ceea ce poate fi convenabil), desigur, apoi N nu este predeterminată –  > Por harold.
  • @harold Aș putea cere utilizatorului să introducă un șir de caractere, dar este mai puțin ușor de utilizat și nu vreau asta. Adică pot dacă trebuie, dar aș prefera să prezint câte o variabilă pe rând. –  > Por ProgrammingEnthusiast.
  • Input permite ca un șir personalizat să fie afișat (și citită și ca intrare, dar nu acesta este scopul). Asta este ceea ce încercați să faceți, nu-i așa? Să înlocuiți „Q=?” cu un șir personalizat? –  > Por harold.
  • @harold Da, este corect și asta este ceea ce nu sunt sigur cum să fac. –  > Por ProgrammingEnthusiast.
1 răspunsuri
harold

S-ar putea să fie ceea ce încerci să faci,

Prompt N
0->dim(|LT
For(I,1,N
    Input sub("XYZTABCDEFGHIJLMPUVW",I,1)+"=?",X
    X->|LT(I)
End
Disp |LT
DelVar |LT

Input este folosit în loc de Prompt, , permițându-ne să alegem șirul. Șirul este construit prin luarea unui subșir de o singură literă din "XYZTABCDEFGHIJLMPUVW" și apoi se adaugă "=?" la acesta, ceea ce îl face să arate exact ca Prompt, Desigur, acest lucru este ușor de modificat. Este vorba de sintaxa SourceCoder, astfel |L înseamnă că ciudat de mic ∟ pentru numele listelor. Nu funcționează dacă lista T este arhivată, ar putea fi făcută să funcționeze, dar IMO nu ar trebui să funcționeze, de obicei o listă arhivată înseamnă că utilizatorul dorește să o păstreze.

Totuși, este mult mai ușor să lași utilizatorul să introducă singur o listă, de exemplu

Input "Input List:",|LT
Disp |LT
DelVar |LT

Acest lucru permite o introducere mai convenabilă pentru utilizator, cum ar fi Rcl (a unei liste întregi) și operațiile cu liste, de exemplu:

Sau poate mai tipic:

Dar N nu este explicit.

Lăsând rezultatul în Ans este probabil util. Imprimarea implicită prin evaluarea unei valori în locul unei comenzi propriu-zise pe ultima linie ne scapă de Done ceea ce nu este atât de util, dar este ceva ce se poate face.

Input "Input List:",|LT
sqrt(sum(|LT^^2
DelVar |LT
Ans

Comentarii

  • Vă mulțumim foarte mult! Am doar o întrebare de urmărire: din moment ce lista este declarată în interiorul buclei for, voi putea apela variabilele create de utilizator în altă parte în codul meu? –  > Por ProgrammingEnthusiast.
  • @ProgrammingEnthusiast da, variabilele sunt globale și nici măcar nu sunt declarate ca atare, este 0->dim(|LT care ar crea lista dacă nu ar exista –  > Por harold.
  • @ProgrammingEnthusiast deși dacă te-ai referit la variabila X, Y, Z etc.. nu funcționează așa, rezultatul este într-o listă aici. Nu există o modalitate rezonabilă de a atribui o „variabilă variabilă” (ca în majoritatea limbajelor de altfel). –  > Por harold.
  • De asemenea, cum se obțin simbolurile „sub” și „|” pe calculator? –  > Por ProgrammingEnthusiast.
  • @ProgrammingEnthusiast sub( este în catalog, mergeți la T și apăsați de două ori în sus. |L este L mic pentru nume de liste, mergeți la LIST, OPS, apăsați în sus. –  > Por harold.