Errori da risolvere

di il
20 risposte

20 Risposte - Pagina 2

  • Re: Errori da risolvere

    AldoBaldo, certe volte dubito che tu sia un insegnante ...

    Sei certo che l'op sappia cosa è una typedef? Sei certo che tutto quello che proponi lui lo conosca e lo abbia già studiato?

    Perché non ti limiti a seguire il suo codice e correggere solo gli errori?

    Io sono certo che un codice perfetto e funzionante a lui setba poco, perché non imparerà nulla se non capirà dove sbagliava.

    @tredici2 ... fermati al primo errore e controlla nuovamente l'argomento c che passi ... Deve essere un array c[] o no?
  • Re: Errori da risolvere

    Oregon, qui non sono un insegnante, sono uno che si diverte con un passatempo. Invece di guardare la TV o fare le parole crociate, per intendersi. Comunque, uno potrebbe cercare "typedef" nell'indice del libro dove sta studiando e il gioco sarebbe fatto.

    In merito all'esercizio, per poter andare avanti ho alcune domande da porre: i voti assegnati sono SEMPRE cinque o possono essere in quantità variabile? E' previsto un massimo o quella quantità può essere una quantità qualsiasi? E ancora, qual è il senso del "bonus"? E' da intendersi come un qualsiasi altro voto o va trattato in qualche modo particolare?

    Chiedo perché...
    Se i voti fossero sempre cinque basterebbe modificare il membro voto della struttura concorrente trasformandolo in un array voto[5]; per includere il bonus (se così fosse richiesto) lo si dovrebbe trasformare in voto[6], oppure aggiungere un membro bonus alla struttura. Se i voti non fossero sempre cinque o sei ma ci fosse un tetto massimo alla loro quantità l'array dovrebbe essere voto[TETTO_MAX]. Se i voti dovessero poter essere in quantità qualsiasi ci vorrebbe un array allocato dinamicamente e il membro voto dovrebbe essere un puntatore a quell'array (il che complicherebbe un bel po' le cose).
  • Re: Errori da risolvere

    AldoBaldo ha scritto:


    Oregon, qui non sono un insegnante,
    Ma dovresti capire i problemi di un allievo, di uno che sta imparando, meglio degli altri.
    uno potrebbe cercare "typedef" nell'indice del libro dove sta studiando e il gioco sarebbe fatto.
    Per chi studia, non è un gioco. Ci sono dei programma scolastici precisi da seguire (giusti o sbagliati, da docente, ripeto, dovresti comprenderlo ...) e magari il professore non accetta l'uso di argomenti che ancora non ha trattato. E magari l'allievo viene pure "punito" per avere "avuto l'aiuto di altri ...
    In merito all'esercizio
    Perché non gli spieghi cosa significano quei messaggi d'errore invece di divertirti a scrivere il programma al posto suo?

    Mah ...
  • Re: Errori da risolvere

    AldoBaldo ha scritto:


    Mi sto divertendo a (cercare di) risolvere l'esercizio.

    Per comodità invece di portarmi dietro struct concorrente ho fatto un typedef, per cui ora uso più sinteticamente il tipo Concorrente (che è comunque la tua struct concorrente).

    Poi ho modificato la funzione carica_elementi_file() in modo che operi sul nome del file anziché su un puntatore allo stream FILE, così: Concorrente *carica_elementi_file( const char *nf, int *qEl );

    In questo modo nel main mi troverò una chiamata molto compatta a c = carica_dati( argv[1], &dim );
    Se c risulterà NULL significa che non è stato possibile caricare i dati e buonanotte al secchio; diversamente, in c mi ritroverò un array allocato dinamicamente con i dati sui quali "lavorare" (occorre ricordarsi di deallocare la memoria prima di lasciare il programma).

    Per caricare i dati, la prima cosa che m'è venuto in mente di fare è contare quante sono le righe nel file, perché mi serve quell'informazione per potere allocare la memoria nella quantità necessaria. Per questo ho preparato una funzione int conta_righe_file( const char *nf ); che viene chiamata dalla funzione carica_dati() (in caso d'errore restituisce -1).

    Quando conosco la quantità delle righe, alloco un array di capacità adeguata, quindi (con una funzione carica_riga_file) carico una ad una le righe in formato di testo così da poterle analizzare con comodo per estrarne i dati da inserire in ciascuno degli elementi dell'array.

    Al momento ho pronto il ciclo che estrae le righe una ad una. Torno a giocare, devo preparare la funzione che analizza le righe!
    Interessante.. per caso se ti viene mi porteresti il codice così do.un occhio? Grazie mille
  • Re: Errori da risolvere

    Non lo sto scrivendo "al posto suo", tant'è che non ho inviato neppure una riga di codice. Lo sto scrivendo come passatempo.

    Ben strano, comunque, l'insegnante che dovesse punire l'allievo che si documenta con curiosità attiva (che è altro dallo scopiazzare acriticamente).

    Sugli errori... sono un po' tantini per spiegarne l'origine uno ad uno! Ne ho indicato giusto uno (che ho poi scoperto che avevi già indicato tu). Secondo me sono talmente tanti da bloccare completamente ogni possibilità di uscirne senza ingarbugliare ulteriormente le cose. Probabilmente gli converrebbe ricominciare da zero procedendo con più calma e verificando passaggio per passaggio che quel che sta facendo funzioni a dovere (con un bel debugger sottomano).
  • Re: Errori da risolvere

    Tredici, com'è la storia del "bonus"?
    Nel frattempo, ho fatto in modo che venga accettato un numero qualsiasi di voti. A questo punto credo anch'io che la mia soluzione usi procedimenti che non fanno parte del tuo "repertorio" (ci sono parecchi allocazioni/deallocazioni di memoria).
Devi accedere o registrarti per scrivere nel forum
20 risposte