Problema......

di il
6 risposte

Problema......

Salve ragazzi..ho bisogno di aiuto..ho da sviluppare un programma davvero ostico..vi posto la traccia..vi prego di darmi qualsiasi aiuto possa aiutarmi nello sviluppo dello stesso. Ne ho davvero bisogno....grazie a tutti!!!!!

Scrivere un programma che permetta di calcolare informazioni statistiche sull’andamento delle
quotazioni di un insieme selezionato di società per azioni su un periodo di un anno.
I nomi delle società sotto osservazione sono memorizzati uno per riga all’interno del file
AZIENDE.TXT (stringhe prive di spazi).
Il programma riceve sulla riga di comando i nomi di due file.
Il primo contiene informazioni sulle quotazioni secondo il seguente formato:
ID quotazione giorno
in cui:
• ID è un intero usato per riferirsi all’azienda (un valore di ID uguale a 3 vuol dire che la
quotazione si riferisce all’azienda il cui nome è memorizzato sulla terza riga del file
AZIENDE.TXT);
• giorno è un numero intero progressivo che rappresenta il giorno di apertura della borsa a
partire dall’inizio dell’anno;
• quotazione è il valore della quotazione dell’azienda ID al giorno di apertura giorno.
Non si può assumere che i dati nel file delle quotazioni siano ordinati.
Il secondo file contiene una lista di comandi (uno per riga). I comandi disponibili sono:
• MAXND nome_azienda: deve calcolare e stampare la lunghezza della più lunga
sequenza non decrescente di quotazioni dell’azienda nome_azienda;
• MAXNC nome_azienda: deve calcolare e stampare la lunghezza della più lunga
sequenza non crescente di quotazioni dell’azienda nome_azienda;
• LND n nome_azienda: deve calcolare le sequenze non decrescenti di quotazioni
dell’azienda nome_azienda lunghe esattamente n giorni, stampando per ognuna il
giorno di inizio e quello di fine;
• LNC n nome_azienda: deve cercare le sequenze non crescenti di quotazioni
dell’azienda nome_azienda lunghe esattamente n giorni, stampando per ognuna il
giorno di inizio e quello di fine;
• MAX nome_azienda: deve calcolare e stampare il massimo valore raggiunto dalle
quotazioni dell’azienda nome_azienda ed il giorno in cui è stato raggiunto;
• MIN nome_azienda: deve calcolare e stampare il massimo valore raggiunto dalle
quotazioni dell’azienda nome_azienda ed il giorno in cui è stato raggiunto.
Il programma deve stampare i risultati dell’esecuzione dei comandi sull’unità di output standard o,
opzionalmente, su un file il cui nome è passato come terzo parametro sulla riga di comando.
Si assuma, per semplicità, che il file AZIENDE.TXT sia privo di errori. Si assuma inoltre che il file
delle quotazioni contenga le quotazioni di tutte le aziende in AZIENDE.TXT per tutti i giorni di
apertura.
Fondamenti di Informatica (LEP,ORG) – AA 2006/7 Qlab.2
Ad esempio se il file AZIENDE.TXT contenesse i seguenti dati:
PARMALAT
CIRIO
FIAT_AUTO
il file QUOT.TXT contenesse i seguenti dati (supponendo che la borsa sia stata aperta solo 4 giorni)
1 23.0 1
1 24.0 2
2 3.0 1
2 2.9 3
3 0.3 3
2 2.7 2
1 22 3
3 0.21 1
3 0.2 2
1 25 4
2 2.5 4
3 0.35 4
il file COMANDI.TXT contenesse le seguenti istruzioni:
MAXND FIAT_AUTO
MAX PARMALAT
MIN PARMALAT
LNC 3 CIRIO
LND 2 CIRIO
ed il programma – denominato stat – fosse attivato con la seguente riga di comando:
C:> stat QUOT.TXT COMANDI.TXT
allora dovrebbe produrre il seguente risultato (sull’unità di output standard):
Massima sequenza non decrescente per il titolo FIAT, l = 3.
Massimo valore per il titolo PARMALAT = 25.00, giorno = 4.
Minimo valore per il titolo PARMALAT = 22.00, giorno = 3.
Sequenze non crescenti di lunghezza 3 per il titolo CIRIO:
giorno inizio = 1, giorno fine = 3.
giorno inizio = 2, giorno fine = 4.
Sequenze non decrescenti di lunghezza 2 per il titolo CIRIO:
Non trovate.

6 Risposte

  • Re: Problema......

    Chiedere di risolverti una traccia intera è un pò troppo...
    Inizia a sviluppare, dove hai qualche dubbio o non sai come fare chiedi e ti sarà detto...almeno da parte mia...
    Mettermi a fare un'analisi scritta intera così non mi va proprio scusa...
    però se in qualche punto non sai come fare, dimmi pure e vedo se riesco ad aiutarti, cmq a primo impatto non mi sembra un programma difficile...
  • Re: Problema......

    Allora..sono riusciuto a stendere parte del programma..mancano la definizione delle varie funzioni..però ho incontrato problemi nell'aquisizione dei dati..vi prego di darmi qualsiasi conziglio utile..grazie a tutti!
  • Re: Problema......

    Allora..sono riusciuto a stendere parte del programma..mancano la definizione delle varie funzioni..però ho incontrato problemi nell'aquisizione dei dati..vi prego di darmi qualsiasi conziglio utile..grazie a tutti!

    #include <stdlib.h>
    #include <stdio.h>
    #include <ctype.h>
    #include <string.h>

    #ifndef FALSE
    #define FALSE 0
    #define TRUE (!FALSE)
    #endif

    #define BOOLEAN int

    #define MAXBC 127
    #define NAZIENDE 100
    #define NGIORNI 365
    #define FAZIENDE \"AZIENDE.TXT\"

    int main(int argc,char *argv[])
    {
    char buf [MAXBC+1],azienda [NAZIENDE],op;
    int giorno [NGIORNI],id,n;
    float quotazione, minv, maxv;
    FILE *afh, *quot, *comandi;
    char MAXND, MAXNC, LND, LNC, MAX, MIN;
    BOOLEAN primo_valore = TRUE;

    /* apertura del file che contiene i nomi delle societa' */

    afh = fopen (FAZIENDE, \"r\");
    if (afh == NULL)
    {
    fprintf (stderr, \"errore - impossibile aprire il file '%s' in lettura\\n\", FAZIENDE);
    exit (1);
    }


    /* chiusura del file */


    if (fclose(afh) != 0)
    fprintf (stderr, \"avviso - errore nella chiusura del file '%s'\\n\", FAZIENDE);


    /* - Acquisizione e controllo dei dati da riga di comando */

    if (argc !=3)
    {
    fprintf (stderr,\" errore numero parametri non valido\\n\");
    exit (4);
    }

    if ((quot = fopen (argv [1], \"r\")) == NULL)
    {
    fprintf (stderr,\" errore parametri non validi\\n\");
    exit (5);
    }

    if ((comandi = fopen (argv [2], \"r\")) == NULL)
    {
    fprintf (stderr,\" errore parametri non validi\\n\");
    exit (6);
    }


    while (fgets (buf,MAXBC,quot) != NULL)
    {
    if (sscanf (buf, \"%d %f %d\", &id, &quotazione, &giorno)!=3)
    fprintf (stderr,\" errore parametri non validi %s \\n\",buf);
    continue;
    if (id<1 || id>NAZIENDE)
    fprintf (stderr,\" errore parametro non valido %d \\n\",id);
    continue;
    if (giorno<0 || giorno>NGIORNI)
    fprintf (stderr,\" errore parametro non valido %d \\n\",id);
    continue;
    }

    while (fgets (buf,MAXBC,comandi) != NULL)
    {
    if ((sscanf (buf, \"%s %s\", op, azienda)!=2) || ((sscanf (buf, \"%s %d %s\", op, &n, azienda)!=3)
    fprintf (stderr,\" errore parametri non validi %s \\n\",buf);
    continue;
    if (n<1 || n>NGIORNI)
    fprintf (stderr,\" errore parametro non valido %d \\n\",id);
    continue;

    id = azienda[id-1] /*azienda desiderata*/
    switch (op)
    {
    case 'MAXND':

    break;
    case 'MAXNC':

    break;
    case 'LND':

    break;
    case 'LNC':

    break;

    case 'MAX':
    case 'MIN':

    if (primo_valore)
    {
    minv = quotazione;
    maxv = quotazione;
    primo_valore = FALSE;
    }
    else /* non e' il primo_valore */
    {
    if (quotazione < minv)
    minv = quotazione;
    if (quotazione > maxv)
    maxv = quotazione;
    }
    break;

    default:
    fprintf (stderr, \"errore riga non valida\\n\");
    continue;
    }

    }

    /* stampa dei risultati */

    return 0;
    }
  • Re: Problema......

    Provo a vedere se riesco a venirne fuori, nel caso ti faccios sapere...saluti!

    PS, ma quanto tempo hai per risolverlo?
  • Re: Problema......

    Ti ho scritto un messaggio privato, appena puoi rispondi
  • Re: Problema......

    Se mi passi l indirizzo e mail ti passo i sorgenti....
Devi accedere o registrarti per scrivere nel forum
6 risposte