Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 34
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337

    [C] array e struct, gestione dinamica

    se intendo utilizzare gli array in modi dinamico, il professore ci ha suggerito di utilizzare una variabile di supporto ed inizializzarla sempre a -1

    così:
    codice:
    int Elenco[100];
    int ultimo = -1;
    vorrei sapere il perchè -1 e soprattuto se potete farmi un esempietto per capire,
    grazie

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Non ho capito cosa intendi dire...

  3. #3

    Re: [C] array e struct, gestione dinamica

    Originariamente inviato da {-_-}
    se intendo utilizzare gli array in modi dinamico, il professore ci ha suggerito di utilizzare una variabile di supporto ed inizializzarla sempre a -1

    così:
    codice:
    int Elenco[100];
    int ultimo = -1;
    vorrei sapere il perchè -1 e soprattuto se potete farmi un esempietto per capire,
    grazie
    -1 perche' genericamente nella programmazione (a oggetti) e' un valore che se ritornato da una funzione significa NonTrovato o cmq ha dei significati speciali

    generalmente nel C viene usato il valore 0 (che equivale a false) ma in un array utilizzi -1 perche' e' un numero che sicuramente non corrisponde a nessuna posizione nell'array

    credo quindi che la tua variabile di supporto servira' a memorizzare una posizione nell'array o qualcosa di simile. fai un esempio piu' chiaro se puoi!

  4. #4
    Dipende dalla semantica (stabilita dallo sviluppatore) della variabile "ultimo". Ovviamente in questo caso assumerebbe il significato di indice non valido. Ma formalmente il significato in effetti è arbitrario. Matematicamente meno uno significa... -1 (occhio alle conversioni in unsigned). ;-)

    Io in tal caso preferirei usare due variabili: la prima "size_t" come indice, la seconda booleana (che ok in C non esiste) per "marcare" la sua validità o no.

    Essenzialmente vi ha detto -1 per non complicarvi troppo il problema ;-)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    vi faccio un esempio così mi spiegate bene, esempio:
    codice:
    #define max 200
    
    int vettore [max];
    int ultimo= -1;
    int V;
    
    scanf ("%d", &V); 
    if (ultimo<max -1){
    vettore[ultimo+1]= V;
    ultimo++;
    }

    mi potreste fare un esempio con un for?

    grazie

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da {-_-}
    vi faccio un esempio così mi spiegate bene, esempio:
    codice:
    #define max 200
    
    int vettore [max];
    int ultimo= -1;
    int V;
    
    scanf ("%d", &V); 
    if (ultimo<max -1){
    vettore[ultimo+1]= V;
    ultimo++;
    }

    mi potreste fare un esempio con un for?

    grazie

    Ma che vuoi dire??

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    intendo dire se volessi utilizzare una struttura dinamica, con una variabile di supporto come nell'esempio fatto, come dovrei fare ad esempio a richiedere dei dati continuamente fino al riempimento del vettore (quindi con un for)?

    ad esempio,
    se ho :

    codice:
    typedef struct{
    char vettore[10]}
    stringa;
    stringa nome[100];
    se voglio chiedere all'utente di inserire i nomi nella struct, come dovrei fare con una variabile di supporto ?

  8. #8
    Originariamente inviato da {-_-}
    intendo dire se volessi utilizzare una struttura dinamica, con una variabile di supporto come nell'esempio fatto, come dovrei fare ad esempio a richiedere dei dati continuamente fino al riempimento del vettore (quindi con un for)?

    ad esempio,
    se ho :

    codice:
    typedef struct{
    char vettore[10]}
    stringa;
    stringa nome[100];
    se voglio chiedere all'utente di inserire i nomi nella struct, come dovrei fare con una variabile di supporto ?
    a parte che dovresti definire esattamente quali sono le stringhe e quali sono le posizioni delle stringhe
    (abbiamo cioe' un 10 stringhe da 100 caratteri o 100 stringhe da 10 caratteri)
    e puoi fare direttamente vettore[100][10]

    ma la cosa ti uscirebbe molto più semplice utilizzando dei char *
    cmq
    codice:
    char nomi[100][10]
    
    int i;
    for (i = 0; i<99;i++){
    printf("inserisci il nome da inserire nella posizione %d",  i);
    scanf("%s",nomi[i]);
     }
    dovrebbe essere semplicemente questo

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    Originariamente inviato da duonovembre

    codice:
    char nomi[100][10]
    
    int i;
    for (i = 0; i<99;i++){
    printf("inserisci il nome da inserire nella posizione %d",  i);
    scanf("%s",nomi[i]);
     }
    dovrebbe essere semplicemente questo
    ad esempio in questo caso ad esempio, io avrei fatto esattamente così, solo che il mio professore mi avrebbe fatto inizializzare una variabile di tipo ultimo = -1, che conta la posizione dei 100 nomi, ma quello che non capisco è perchè devo usare questo meno uno, quando posso usare un contatore che i come in questo caso?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Guarda che non si sta capendo nulla ...

    Se non hai ben compreso (e non ci fai comprendere) a cosa dovrebbe servire questo -1, non ne usciamo fuori ...

    La tua frase iniziale

    "...se intendo utilizzare gli array in modi dinamico, il professore ci ha suggerito di utilizzare una variabile di supporto ed inizializzarla sempre a -1..."

    non e' tanto chiara da fare capire cosa risponderti ...

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.