Semplice Pseudocodice Codice domanda

voti
0

Sono un po 'nuova per pseudocodice. Capisco quello che il codice sta dicendo, ma avendo un momento difficile mettere insieme i pezzi. Come dovrei pensare di capire che cosa questo codice sta facendo:

Supponiamo che a1, a2,. . . , Ak è una matrice di numeri k. Che cosa significa il seguente frammento di codice? Brevemente spiegare perché. Si supponga che tutte le linee frastagliate appartengono all'interno del ciclo.

1 for p := 1 to ⌊k/2⌋
2     t := ap
3     ap := ak−p+1
4     ak−p+1 := t
È pubblicato 29/08/2010 alle 16:07
fonte dall'utente
In altre lingue...                            


2 risposte

voti
0

Il ciclo rispecchia matrice alla elemento centrale come cambia un [p] con un [k-p + 1] dove a [p] è sempre sul lato "sinistro" della matrice e un [k-p + 1] è sempre dalla parte "giusta". t è una variabile temporanea.

Risposto il 29/08/2010 a 16:13
fonte dall'utente

voti
2

Ookay,

1 for p := 1 to ⌊k/2⌋

mezzi, stiamo andando fino alla metà della matrice.

2 t := ap
3 ap := ak−p+1
4 ak−p+1 := t

Questo modello può essere riconosciuto come "swap con temporanea t". E ciò che viene scambiato?

Ebbene, ape ak-p+1, uno è pl'elemento -esimo dall'inizio matrice , l'altra l' p-esimo un dall'estremità .

Quindi, per riassumere :

Si scambia la nprima esimo con l' nultimo valore di matrice esimo fino alla metà della matrice. E dopo? La matrice è invertita .

Si noti che il pseudocodice formato sembra davvero strano - e, cosa più importante - ambiguo.

È ak-p+1equivalente a a[k-p+1]o a[k]-p+1o a[k-p]+1? Se no, come hai fatto a esprimere gli altri.

Così in un primo momento, mi converto questo codice a una fonte reale di come Python, che è molto più facile da leggere.

Modifica .

I) Beh, come hai postato, la matrice va da a1a ak.

II) Pensa come si potrebbe scambiare i valori di due variabili ( ae b):

1 temp := a
2 a    := b
3 b    := temp

Naturalmente, dal momento che sovrascritto acon bin linea 2 , si doveva memorizzare il vecchio avalore in una temporanea, che è temp.

Risposto il 29/08/2010 a 16:19
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more