PDA

View Full Version : Help programma in C


Pillus
21-01-2007, 12:29
i metto il testo di un programma che sto facendo per esercizio in vista dell'esame di informatica. Il problema è che devo farlo partire da terminale e questo mi incasina un po'. Ho qualche problemino a terminarlo e non riesco ad andare avanti. Scusatemi ma sono nuovo al mondo della programmazione. Qualcuno mi darebbe delle delucidazioni su come possa far stampare i risultati presenti in un file di testo partendo da terminale? Thanks

Si vuole realizzare un programma in linguaggio C di nome AGENDA.EXE che gestisca un’agenda elettronica
per un anno solare. Gli appuntamenti sono memorizzati uno per riga nel file AGENDA.TXT col seguente formato:
Giorno Ora Appuntamento
Il campo Giorno indica il giorno (partendo dal 1 gennaio) usando una codifica da 1 a 366.
Il campo Ora indica l’ora dell’appuntamento, codificata su due cifre (00-23).
Il campo Appuntamento è una stringa di caratteri (al massimo 50) e non contiene spazi.

Si noti che (A) il numero di righe nel file non è noto a priori, (B) ci possono essere più appuntamenti per lo stesso giorno, ma non alla stessa ora e (C) non esiste nessun tipo di ordinamento nel file.
Il programma deve poter eseguire le seguenti azioni, specificate da opzioni sulla riga di comando:

− Visualizzare tutti gli appuntamenti di un giorno, dato il codice del giorno indicato sulla riga di comando dopo l’opzione -v:

AGENDA -v numero_del_giorno

− Inserire un nuovo appuntamento se possibile, dati il codice del giorno, l’ora e la descrizione
dell’appuntamento indicati sulla riga di comando dopo l’opzione -i:

AGENDA -i numero_del_giorno ora descrizione

Si noti che non è possibile fissare due appuntamenti per lo stesso giorno e per la stessa ora, e che
l’inserimento consiste nell’aggiungere in fondo al file la riga relativa all’appuntamento.

− Cercare un appuntamento data una parola da cercare come sottostringa nelle descrizioni degli appuntamenti:

AGENDA -s sottostringa

il programma deve visualizzare il giorno e l’ora corrispondenti all’appuntamento cercato; se esistono più appuntamenti contenenti la stessa sottostringa, il programma deve stamparli tutti.

Esempi:
C:\> AGENDA -v 123
123 10 esame_info
123 15 riunione
C:\> AGENDA -i 123 10 riunione
Appuntamento già esistente, impossibile aggiungerlo.
C:\> AGENDA -i 233 10 riunione
Inserito appuntamento "riunione" alle ore 10 del giorno 233
C:\> AGENDA -s riunione
123 15 riunione
212 21 riunione_casa
233 10 riunione
311 13 prossima_riunione

MEMon
21-01-2007, 12:55
Ma il problema dove sta? Prova a fare qualcosa e poi se hai problemi torni e ci dici, mica possiamo fartelo noi il programma, anche xkè altrimenti non impari...

Pillus
21-01-2007, 15:23
Il problema principale sta nel fatto che non riesco a farlo partire da terminale poichè non riesco a far stampare dal programma le istruzioni immesse dall'utente. Ad esempio per il primo comando io ho fatto qualcosa del tipo

while( fgets( riga, MAX, f ) != NULL )
{
r = sscanf(riga, "%d %d %s", &giorno, &ora, app);
if(r!=3)
printf("Errore!\n");
else
{
for(i=0; i<giorno, i++)
{
if(argv[1]=="-v" && argv[2]==giono)
{
printf("%d %d %s", giorno, ora, app);
}

........
}
........
}
........

}


ma non mi stampa il risultato e il file lo avevo aperto con la fopen in lettura.

andbin
21-01-2007, 15:47
Il problema principale sta nel fatto che non riesco a farlo partire da terminale poichè non riesco a far stampare dal programma le istruzioni immesse dall'utente. Ad esempio per il primo comando io ho fatto qualcosa del tipo [...]Già questo:

if(argv[1]=="-v" && argv[2]==giono)

è sbagliato, in quanto stai comparando gli indirizzi delle stringhe, non il loro contenuto.

Pillus
21-01-2007, 16:15
Già questo:

if(argv[1]=="-v" && argv[2]==giono)

è sbagliato, in quanto stai comparando gli indirizzi delle stringhe, non il loro contenuto.

Ok, ti ringrazio è vero. Scusa ma ho delle difficoltà perchè non ho mai programmato prima ad ora. Ho sostituito con una stringa ma poichè in lettura ho appena dopo anche una variabile intera non riesco a farle leggere entrambe. Il problema mio è proprio far partire da terminale, prima di adesso facevo si che si leggesse passo dopo passo ogni dato inserito dall'utente. Ti ringrazio cmq, sei stato gentile. Continuo a provare cmq, prima o poi devo imparare! Grazie :)