Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 34
  1. #11
    1)devi utilizzare un for o un while?

    2)questo ciclo si trova dentro al main o dentro ad una funzione?

    ()

  2. #12
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    in pratica mi è stato detto:
    quando usi una struttura dinamica, utilizza sempre una variabile di supporto inizializzata a -1, che conta il numero di iterazioni,

    ad esempio ho un elenco da riempire di nomi, per gestire la dinamicita, mettendo gli elementi in contiguità fisica nello stack, mi è stato detto di inizializzare la variabile di supporto sempre a -1,

    mettiamo caso che i nomi da inserire siano 50,

    allora dovrei fare qualcosa di questo tipo:

    for (ultimo=-1; ultimo < 50-1; ultimo ++)

    quello che non capisco è:

    perchè devo usare il -1, e non posso fare smeplicemente

    for (ultimo=0; ultimo<50; ultimo++)

    dal punto di vista matematico è la stessa identica cosa, forse serve per evitare lo sfondamento del vettore in fare di ricerca, cancellazione, sostituzione?

    spero di essere stato più chiaro,

    Grazie ancora

  3. #13
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Meglio se ti fai rispiegare cosa intendesse dire.

    Gli array partono sempre da 0, se cicli con un -1 come valore iniziale, rischi solo un bel crash.
    Nel tuo esempio è corretto partire da 0 e finire con < 50.
    L'unico caso che mi venga in mente è questo.

    codice:
    int i = -1;
    
    while (++i < 50) { array[i]; }
    per sfruttare l'operatore di incremento prefisso (e che francamente mi sembra una baggianata)

  4. #14
    Originariamente inviato da {-_-}
    in pratica mi è stato detto:
    quando usi una struttura dinamica, utilizza sempre una variabile di supporto inizializzata a -1, che conta il numero di iterazioni,

    ad esempio ho un elenco da riempire di nomi, per gestire la dinamicita, mettendo gli elementi in contiguità fisica nello stack, mi è stato detto di inizializzare la variabile di supporto sempre a -1,

    mettiamo caso che i nomi da inserire siano 50,

    allora dovrei fare qualcosa di questo tipo:

    for (ultimo=-1; ultimo < 50-1; ultimo ++)

    quello che non capisco è:

    perchè devo usare il -1, e non posso fare smeplicemente

    for (ultimo=0; ultimo<50; ultimo++)

    dal punto di vista matematico è la stessa identica cosa, forse serve per evitare lo sfondamento del vettore in fare di ricerca, cancellazione, sostituzione?

    spero di essere stato più chiaro,

    Grazie ancora
    for (ultimo=-1; ultimo < 50-1; ultimo ++)

    questo codice generera' sicuramente un errore, poiche' il primo campo al quale tentera' di accedere e' -1 e non e' valido

    cmq scrivere 50-1 o 49 e' identico, ma se usi una variabile di dimensione per inizializzare l'array ha + senso scrivere "50-1"
    es:

    int n = 50;
    char *a[n];
    int i;
    for (i =0; i<n-1;i++)//se metti n e basta il ciclo lavorera' sull'elemento a[n] (a[50]) che non esiste

  5. #15
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    Originariamente inviato da duonovembre
    for (ultimo=-1; ultimo < 50-1; ultimo ++)

    questo codice generera' sicuramente un errore, poiche' il primo campo al quale tentera' di accedere e' -1 e non e' valido
    in raltà no perchè il codice prosegue con
    vettore[ultimo+1]
    quindi parte da 0
    cmq scrivere 50-1 o 49 e' identico, ma se usi una variabile di dimensione per inizializzare l'array ha + senso scrivere "50-1"
    es:

    int n = 50;
    char *a[n];
    int i;
    for (i =0; i<n-1;i++)//se metti n e basta il ciclo lavorera' sull'elemento a[n] (a[50]) che non esiste
    interessante

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da {-_-}
    ...
    interessante
    Confermo ... e' meglio che ti fai rispiegare la faccenda e la riproponi perche' cosi' come la stai dicendo, non ha nessun senso ...

  7. #17
    dimenticavo di aggiungere (davo per scontato ed ho sbagliato) che char *a inizializza una "stringa" (+ correttamente dichiara un puntatore ad una stringa) che poi potrai inizializzare con una qualsiasi lunghezza a tua scelta, ma analogamente potevo scrivere char a[50] ma questo creava una stringa di esattamente 50 caratteri

    se non avete ancora fatto i puntatori ti basti sapere che e' praticamente identico all'uso dell'array a parte il fatto che non puoi chiaramente richiamare un carattere della stringa con a[5], ma dovrai utilizzare *a++ per scorrere tra i caratteri. se ti interessa capire meglio guarda la guida di C su questo sito che e' molto buona e facilmente comprensibile

  8. #18
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    ok, penso di aver capito

    consideriamo i due casi (tralascio le dichiarazioni etc)
    codice:
    for (ultmio=-1; ultmio<4-1; ultimo ++)
     vettore [ultimo+1];
    codice:
    for(i=0; i<4; i++)
     vettore [i];
    nel caso due ottengo analizzando le varie componenti:

    i iniziale |0|1|2|3|
    -------------------------------
    posizione di v |0|1|2|3|
    -------------------------------
    i finale |1|2|3|4|
    ------------------------------
    con i finale = 4 esco

    ****************************

    nel caso uno ottengo invece

    ultimo iniziale |-1|0|1|2|
    -------------------------------
    posizione di v |0|1|2|3|
    -------------------------------
    ultimo finale |0|1|2|3|
    -------------------------------
    con ultimo finale = 3 esco

    in questo secondo caso il valore ultimo coincide con la posizione di v, mentre nel primo era avanti di 1 la i finale, quindi per avere una perfetta contiguità fisica è meglio il secondo, ecco perchè mi hanno detto di inizializzarlo a -1, così ultimo rispecchia l'ultimo elemento nel vettore
    ***************************

    credo sia così

  9. #19
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da duonovembre
    se non avete ancora fatto i puntatori ti basti sapere che e' praticamente identico all'uso dell'array a parte il fatto che non puoi chiaramente richiamare un carattere della stringa con a[5], ma dovrai utilizzare *a++ per scorrere tra i caratteri. se ti interessa capire meglio guarda la guida di C su questo sito che e' molto buona e facilmente comprensibile
    Guarda che è perfettamente lecito usare le parentesi [] con una array nell'heap.

  10. #20
    mi sembra che faccia un iterazione in + di quanto dici
    vado a mangiare (devo ancora pranzare e poi ti dico)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.