E' possibile creare con C un programma per gestire dei turni?

di il
4 risposte

E' possibile creare con C un programma per gestire dei turni?

Ciao a tutti, vi espongo subito il mio problema. Mio padre mi ha chiesto di scrivergli un programma per effettuare in maniera automatica una turnazione di lavoro. Io conosco solo C e non so usare excel o programmi basati sui database, quindi volevo sapere se prima di impelagarmici era una cosa fattibile o eccessivamente complicata (o piuttosto se è così più facile da risolvere con excel da essere più conveniente impararlo da 0). Spero si sia capito di che tipo di problema parlo, concettualmente quello a cui pensavo era un programma che tramite una randomicità di qualche tipo mi buttasse fuori una settimana di turni sempre diversa. Se qualcuno ha affrontato un problema del genere e ha dei suggerimenti da darmi sono tutt'orecchi. Thank you

4 Risposte

  • Re: E' possibile creare con C un programma per gestire dei turni?

    enricoscarsissimo ha scritto:


    Ciao a tutti, vi espongo subito il mio problema. Mio padre mi ha chiesto di scrivergli un programma per effettuare in maniera automatica una turnazione di lavoro. Io conosco solo C e non so usare excel o programmi basati sui database, quindi volevo sapere se prima di impelagarmici era una cosa fattibile o eccessivamente complicata (o piuttosto se è così più facile da risolvere con excel da essere più conveniente impararlo da 0). Spero si sia capito di che tipo di problema parlo, concettualmente quello a cui pensavo era un programma che tramite una randomicità di qualche tipo mi buttasse fuori una settimana di turni sempre diversa. Se qualcuno ha affrontato un problema del genere e ha dei suggerimenti da darmi sono tutt'orecchi. Thank you
    Ciao, prima di tutto dovresti evidenziare i requisiti che questo programma deve avere, cosa deve fare nel dettaglio. Senza queste informazioni la tua domanda non ha molto senso, vuol dire tutto e niente.
  • Re: E' possibile creare con C un programma per gestire dei turni?

    La risposta e' SI, SIA per Excel, SIA con il C.

    Il problema ( ) NON E' quale strumento utilizzare, MA

    "FORMALIZZARE"

    il ""problema"" in modo che sia risolvibile mediante un programma.

    Inizia con una FORMALIZZAZIONE basata sulla matematica: funzioni e insiemi, tabelle, vettori, matrici, ""dizionari"".
    Un ""dizionario"", dal punto di vista funzionale, e' una FUNZIONE con dominio il dominio delle chiavi e codominio il dominio dei valori.

    Un caso semplicie di mappa e' il vettore di numeri reali: e' una MAPPA dagli interi ai numeri reali!
    
        vettore : N -> R
    
    La matrice e' una MAPPA da COPPIE di numeri interi ai numeri reali
    
        matrice : N^2 -> R
    
    SE non lo sai fare, allora non ha nemmeno senso tentare di realizzare il programma.
  • Re: E' possibile creare con C un programma per gestire dei turni?

    Essenzialmente mi stai dicendo di cercare di trovare un algoritmo per la risoluzione del problema in senso astratto, e se lo trovo provare ad implementarlo. Non avevo mai sentito parlare di mappe (e attualmente mi sfugge il nesso con il mio tipo di problema), ma cercherò di seguire il tuo consiglio. Comunque il fatto che l'implementazione non sia "limitata" dal linguaggio lo considero già un successo
  • Re: E' possibile creare con C un programma per gestire dei turni?

    Non hai specificato che tipo di turnazione devi fare. In generale, presta attenzione a due cose:
    • una turnazione lavorativa è soggetta a regole e vincoli (anche legali)
    • non ha senso fare turnazioni a caso
    Per cominciare puoi provare a fare i turni con Excel/Libreoffice giusto per capire come si sviluppa a mano la cosa.
    Dal punto di vista grafico puoi immaginare la turnazione come un diagramma di Gantt, in cui ogni segmento del diagramma è un turno coperto da 1 o più persone. Al termine del turno il diagramma continua con un altro lavoratore, fino a coprire il periodo (settimana o mese).
    Ogni volta che aggiungi un segmento, devi incrementare le ore lavorate e considerare i vincoli (ad esempio giorni di riposo, ferie/permessi, malattia, legge 104, ecc.).
    Se vuoi farlo in C, a grandi linee ti serve un vettore di strutture per ogni lavoratore, in cui memorizzi i dati (ore contrattuali, eventuali vincoli tipo legge 104, ferie/permessi, ecc).
    Poi un altro vettore di strutture che rappresenta il segmento del diagramma di Gantt (turno).
    Scegli con chi cominciare il turno, verifichi i vincoli e se non ci sono impedimenti assegni il turno a quel lavoratore: incrementi il conteggio delle ore lavorate e passi al lavoratore successivo. Se il controllo dei vincoli fallisce (ad esempio, per quel giorno ha chiesto un permesso), passi al lavoratore successivo nella lista. Se tutti i lavoratori non passano il controllo dei vincoli per quel giorno, hai un grosso problema...
    Come traccia direi che basta.
    Puoi fare anche una macro con Excel/Libreoffice: il primo foglio è la turnazione finale. Un secondo foglio sono i dati dei lavoratori. Un terzo foglio sono le richieste tipo ferie. Nel foglio 1 metti nella prima riga in alto le date con i turni. I fogli 2 e 3 hanno in colonna A i nomi dei lavoratori, con i vincoli disposti nelle righe. Nel foglio 3 metti ferie/malattia/permessi. La macro riempie il foglio 1 prendendo i dati dal foglio 2 e controllando sul foglio 3.
Devi accedere o registrarti per scrivere nel forum
4 risposte