Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Rotazione a spirale di un vettore di caratteri
Forum - C/C++ - Rotazione a spirale di un vettore di caratteri

Avatar
drewnik99 (Normal User)
Pro


Messaggi: 69
Iscritto: 28/03/2008

Segnala al moderatore
Postato alle 22:13
Martedì, 04/10/2011
Il problema è il seguente:
dato un vettore di caratteri di lungezza pari ad un quadrato perfetto(minimo 25), eseguire una rotazione a spirale di tale vettore.

Esempio:
vettore: "abcdefghijklmnopqrstuvwxy"   25 caratteri

abcde                                              mabcd
fghij                                                kfghe
klmno                --->                       pqlij
pqrst                                               ursno
uvwxy                                             vwxyt

ottengo: "mabcdkfghepqlijursnvwxyt"


abcde  -> /abcd   + e(orizzontale)
ejoty   -> d(e)jot  + y(verticale)
uvwxy -> vwx(y)t   + (orizzontale - contrario)
afkpu  ->  /kp(u)v + y(verticale - contrario)

/ = il primo carattere diventerà 'm', che è l'ultimo nello spirale.
Qualche suggerimento?

Ultima modifica effettuata da drewnik99 il 04/10/2011 alle 22:23
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 2:08
Mercoledì, 05/10/2011
Una spirale su un quadrato e' composta da tanti quadrati messi uno dentro all'altro, ad una profondita P.

Prendendo la matrice 5x5 delle lettere alfabetiche che hai proposto tu, a profondita 0 il quadrato (perimetro del quadrato) e' composto da abcdejotyxwvupkf.

A profondita 1 e' composto da ghinsrqlg.

A pronfondita' 2 e' composto solo da m.

Se riesci a scrivere una funzione che data una matrice ti ritorna i componenti esterni che formano il perimetro del quadrato (a profondita' P), fai una serie di concatenazioni da P = 0 a N (dove N e' dato dalla dimensione del quadrato/2), dopodiche' fai un semplice shift (ultimo elemento diventa il primo, il primo diventa secondo, ecc.).

Ultima modifica effettuata da pierotofy il 05/10/2011 alle 3:34


Il mio blog: https://piero.dev
PM Quote