Ciclo for in lista.

di Anonimizzato13124 il
16 risposte
Buongiorno a tutti , spiego il mio dubbio :
Sto pensando di costruire una struttura "studente" che comprenda i seguenti campi all'interno :nome,
cognome , matricola,materie date.
Ora siccome , capisco che dichiarare per esempio 20-25 campi all'interno della struttura dedicate alle materie date sarebbe dispendioso in termini di dimensione del programma , mi chiedevo se fosse possibile inserire un ciclo for che si arresti quando le materie da inserire per un determinato studente siano finite.

16 Risposte

  • Non si è capito cosa intendi.

    Comunque in quella struttura le materie dovrebbero essere inserite in una lista e il puntatore alla testa nella struttura.
  • Potresti definire una tabella completa con le stringhe di tutte le possibili materie; quindi la struttura studente conterrà semplicemente un array di interi (o meglio di short int se non addirittura unsigned char se le materie sono al massimo 255) che ti da l'indice di ogni materia data (0 per terminare la lista).
  • Potrei tranquillamente procedere inquesto modo :

    struct lista{

    char nome [DIM];
    char cognome[DIM];
    char matricola[DIM];
    char materia1[DIM];
    char materia2[DIM];
    char materia2[DIM];
    e cosi via fino alla ventesima..

    struct lista *next;}

    typedef struct lista *lista_p;

    io mi chiedevo se magari tramite un indice posto nella materia1[DIM] e magari con un ciclo for , potevo eliminare il fatto di dover dichiarare tutte le altre variabili materie..
  • Puoi usare una matrice di stringhe

    char materia[20][DIM];
  • Ok , e far variare i da 0 a 20, se ho capito bene giusto ?
  • Da 0 a 19
  • Ma facendo questa modifica , basta semplicemente inserire questo ciclo for all'interno del main o ulteriori modifiche nelle funzioni ?
  • Modifiche nelle funzioni? Quali funzioni?
  • Funzioni che ho costruito tipo delete to list , earch to list... add to list etc etc. vanno modificate?
  • E che ne so? Non vedendole come si fa a saperlo?
  • @candaluar , potresti spiegarmi meglio , magari con un esempio cosa fare?
  • Caro Daniele, se ti facessi un esempio tu lo prenderesti e lo copieresti nel tuo programma; dopo due minuti mi risponderesti: "non funziona" . Non cercheresti nemmeno di capire.
    In questa fase, a mio avviso, qualsiasi esempio o soluzione ti venga data è controproducente per la tua formazione; è meglio se ricominci affrontando problemi più semplici, senza l'aiuto di nessuno.
  • Ma perché adesso ti metti a chiedere un esempio per un metodo che è un pelino più complesso di quello su cui ti stavo instradando io?

    Probabilmente volevi la pappa pronta da candaluar dato che non l'ottieni da me ...

    Segui il ragionamento che stavi facendo con gli elementi della matrice da 0 a 19 e inseriscili nel tuo codice ragionandoci ...
  • Tu pensi che io non c'abbia provato??
    Ho scritto char[ materia [20][DIM];
    int i=0;(dentro il main)
    e ciclo for prima di while.
    Di piu non ho capito dai tuoi messaggi.
Devi accedere o registrarti per scrivere nel forum
16 risposte