"Ciclo For" per controllare molti elementi in un array

di il
9 risposte

"Ciclo For" per controllare molti elementi in un array

Salve a tutti appassionati di programmazione, il mio problema riguarda questo codice:
p=c[1]; c[1]=c[5]; c[5]=c[4]; c[4]=c[3]; c[3]=c[2]; c[2]=p;
Come potete vedere ho 6 elementi in un array che ho chiamato " c " e avrei bisogno di mettere tutto questo in un Ciclo For se si può, perchè la lunghezza dell'array sarà variabile e non sempre di 6. Ho provato a scervellarmi ma non sono in grado di arrivarci ancora. Grazie in anticipo !!!!

9 Risposte

  • Re: "Ciclo For" per controllare molti elementi in un array

    Mi sembra banale ... ma forse non ho capito ...
    
    p=c[5];
    for(int i=5; i>1; i--)
      c[i]=c[i-1];
    c[1]=p;
    
  • Re: "Ciclo For" per controllare molti elementi in un array

    Scusate ma sono una vera frana a spiegare i concetti: ora ci riprovo:
    Qualsiasi sia la lunghezza dell'array, che chiameremo " a ", dovranno verificarsi sempre le seguenti condizioni:
    ------------------------------------------------------------------------------------------------------
    • il 2' valore dovrà essere messo in una variabile provvisoria che chiameremo " p ";
    • l'ultimo valore dovrà essere messo nella 2' casella dell'array;
    • il valore di " p " dovrà essere messo nella 3' casella dell'array;
    • mentre tutti gli altri valori dovranno essere messi nella rispettiva casella successiva;
    ------------------------------------------------------------------------------------------------------
    ...quindi ho provato a fare così:

    for(i=0; i<a; i++)
    {
    p=c[1];
    c[1]=c[a];
    c[2]=p;
    c[i+1]=c;
    }

    RISULTATO: mi genera un valore a 10 cifre tipo: 2009143892 per ogni casella dell'array.
    Non capisco cosa non riesco a capire !!
  • Re: "Ciclo For" per controllare molti elementi in un array

    Se per secondo intendi c[1] e per terzo c[2] e vuoi fare una rotazione a destra, il codice che ti ho mostrato è corretto e vale per qualunque lunghezza dell'array.

    L'hai provato? Facci vedere come. Sicuramente hai commesso un errore e se lo mostri si capisce e si evitano mille risposte.
  • Re: "Ciclo For" per controllare molti elementi in un array

    Grazie Oregon per la pazienza:
    Il 5 l'ho sostituito con una variabile che ho chiamato " a " perchè non sarà sempre 5.
    il tuo codice è esatto salvo per una cosa che non mi è chiara:
    Il for non ha le parentesi graffe, e quindi ho pensato che finisse con l'istruzione successiva, e non le ho messe nemmeno io.
    RISULTATO: nel vettore finalmente i valori sono messi al posto giusto tranne che nella 2' cella: mi dà 2009143892

    p=c[a];
    for(i=a; i>1; i--)
    c=c[i-1];
    c[1]=p;
  • Re: "Ciclo For" per controllare molti elementi in un array

    Ascolta ... in C l'indice dei vettori parte da 0 ... vuoi postare il codice con cui hai dichiarato il vettore e con cui hai provato ? Posta tutto il main ...
  • Re: "Ciclo For" per controllare molti elementi in un array

    Grazie OREGON di aver fatto luce su una cosa banale, ma che con la mia sbadataggine non avevo considerato.
    I VETTORI PARTONO DA 0
    quindi era doveroso che al posto del 5 mettessi "a-1" e non "a"
    Questa alla fine è stata la soluzione.

    p=c[a-1];
    for(i=a-1; i>1; i--)
    c=c[i-1];
    c[1]=p;

    CHIEDO SCUSA per il casino creato

    ancora un saluto a tutti voi Moderatori, fate un lavoro eccezionale !!! Complimenti !!!
  • Re: "Ciclo For" per controllare molti elementi in un array

    Ma quindi deve essere
    
    p=c[a-1];
    for(i=a-1; i>0; i--)
       c[i]=c[i-1];
    c[0]=p;
    
    se vuoi considerare anche l'indice 0
  • Re: "Ciclo For" per controllare molti elementi in un array

    SI' GIUSTO se dobbiamo considerare anche lo 0 !!!
    nel mio caso non serviva l'indice 0 perchè la prima casella doveva rimanere fissa e mai cambiata.
  • Re: "Ciclo For" per controllare molti elementi in un array

    Anche se consideri sempre 0 la prima casella è fissa ... mah ... non ti capisco ...
Devi accedere o registrarti per scrivere nel forum
9 risposte