Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    [C++] Scalare di posto in un array

    se ho un array di elementi

    3 4 1 1 0

    come faccio a scalare di posto i suoi elementi ?

    cioè in questo modo

    0 0 3 4 1 1 0

    dove non ci sono numeri bisogna mettere lo 0.

    Io ho usato due contatori, uno che conta i passaggi e l'altro che conta i posti e scambia gli elementi dell'array. Il programma però non funziona. Mi aiutate ?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Devi postare il programma che hai scritto, altrimenti come si fa a dirti dove sbagli ??
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    codice:
    printf("Inserisci n di posizioni da scalare\n");
    scanf("%d", &posizione);
    
    for(j = 0; j < posizione; j++) {
    
    for(i = n + posizione - 1; i > 0; i--) {
    
    array[i + 1] = array[i];
    }
    
    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Se devi scalare a destra i valori, non puoi andare oltre la fine dell'array.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    non ho capito
    Ultima modifica di Bombonera; 16-09-2014 a 22:23

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Come è fatto il tuo array? Dove e come lo dichiari e riempi? Partiamo da questo ...

    Comunque ... se n è il numero di elementi e pos il numero di posizioni, controllando che pos sia valido, puoi scrivere

    codice:
    	for(i=n-pos-1; i>=0; i--)
    		arr[i+pos]=arr[i];
    	for(i=0; i<pos; i++) arr[i]=0;
    Ultima modifica di oregon; 16-09-2014 a 22:56
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di SigAlexey
    Registrato dal
    May 2014
    residenza
    Treviso
    Messaggi
    186
    scusate se mi intrometto, ma oregon sta cercando di dirti che se hai un array di 5 elementi, non puoi inserirne altri in modo da superare la sua grandezza.

    Quindi se hai dichiarato

    codice:
    int array[] = new int[5];
    puoi avere al massimo 5 elementi.

    Anche se fai il ciclo per inserirne di nuovi, avrai sempre quelli perchè la grandezza dell'array è quella.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Ad esempio



    codice:
    #define MAX 50;
    
    int main( void ) {
       
    int array[MAX];
    
    }
    se per esempio l'utente digita 5. Allora inserisce nell'array 5 elementi

    Poi l'utente digita per esempio 2 e dovrebbe scalare da sinistra a destra i numeri. Voi mi state dicendo che carico un array di n elementi allora n diventa anche la sua grandezza ?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    No ... non hai capito ...

    Supponiamo che MAX sia 10 e che l'array contenga

    1 2 3 4 5 6 7 8 9 10

    Se inserisci 3 nuovi valori scalando gli esistenti verso destra avrai

    0 0 0 1 2 3 4 5 6 7


    Sei d'accordo?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    si. Ma nel mio caso MAX è 50.

    Se io inserisco n = 10 e quindi ho un array del tipo

    1 2 3 4 5 6 7 8 9 10

    scalando dovrebbe dare

    0 0 0 1 2 3 4 5 6 7 8 9 10

    gli elementi da 10 arrivano a 13

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.