logadato
09-09-2002, 23:08
Salve a tutti,
sono alla prime armi col C, ho urgente bisogno di risolvere questo
quesito,sotto riportato,cioè devo scrivere un programmino che soddisfi le
specifiche date..e questo è ovvio:-)))
Ho già iniziato una probabile soluz ma sono certo che ci sia qualche
errore.oltretutto non so proprio dove iniziare per risolvere il terzo punto
dell'esercizio.
Spero vivamente di trovare qualche anima buona in questo ng disposto a
perdere un pò del suo tempo.. Soprattutto,ripeto,er aiutarmi col terzo punto.
Ringrazio tutti coloro che mi risponderanno anche solo per correggere pochi
passaggi del mio operato.
Saluti,Lollo
In un’agenzia di servizio corriere le richieste giornaliere di ritiro pacchi da spedire sono memorizzate su di una lista collegata (rappresentata tramite strutture/record e puntatori) in memoria centrale.Per ogni richiesta la lista contiene un elemento che specifica:
· l’orario in cui è stata effettuata la richiesta(rappresentato tramite due campi interi,uno per le ore,l’altro per i minuti)
· nome del mittente (stringa max 20 caratteri)
· indirizzo del mitt.( stringa max 40 char)
· sigla della provincia di destinazione(2 caratteri)
La lista è già ordinata per orario crescente.
Si richiede di risolvere i seguenti punti
1- progetta la struttura dati per risolvere i punti 2 e 2
2- Progetta una funz C che , presi in ingresso attraverso opportuni parametri la lista L delle richieste e la sigla P di una provincia,scriva su di un file l’ora,nome e indirizzo del mittente di tutte le richieste in L destinate alla provincia P,una richiesta per riga. Il nome del file deve essere ottenuto concatenando la sigla della provincia P con l’estensione ”.txt”.
3- Progetta una funz C che, presi in ingresso attraverso opportuni parametri la lista L delle richieste di spedii ed un orario T ( specificato in ore,minuti),elimini dalla lista L tutte le richieste effettuate più tardi di T,liberando la memoria occupata dagli elementi eliminati.
Nell’eliminare gli elementi ,si deve tener conto del fatto che la lista è ordinata per orario crescente
Per le richieste rimaste in L,la funz deve inoltre restituire in un opportuno vettore (con una componente per ogni ora della giornata) il num delle richieste effettuate in ciascuna ora della giornata.In altre parole,la componente h del vettore deve contenere il num di richieste effettuate tra h:00 e h:59
Soluzione (un semplice abbozzo)
1)
# include < stdio.h>
#include<stdlib.h>
#iclude<string.h>
# define LUNGNOME 20
# define LUNGIND 40
# define LUNGPROV 2
typedef char [LUNGNOME +1] ;
typedef char [LUNGIND +1] ;
typedef char [LUNGPROV +1] ;
Struct tipoOrario{
Int ore;
Int minuti ; };
typedef tipoorario TipoOrario;
struct TipoRichiesta{
TipoOrario orario;
TipoNome nome;
TipoIndirizzo indirizzo;
TipoProvincia pv;
typedef struct tipoRichiesta NodoRichieste ;
typedef Nodorichiesta *Tipolistarichiesta
2)
void individuarichieste (tipolistarichiesta lis tipoprovincia pv)
{tipolistarichiesta aux;
FILE * pv.txt,
if((pv.txt=fopen(“pv.txt”,”w”))= =null){
printf (“errore in apertura del file “pv.txt”);
exit (1);}
while (lis != null){
if(stamp (aux®pv,pv)= = 0)
fprint(“pv.txt”, "% d : %d %20s %40s %2s " ,lis.ore®pv,
lis.minuti®pv, lis.nome®pv, lis.indirizzo®pv, lis.pv®pv);
lis=lis®next;}
fclose(pv.txt);
}
3)?
sono alla prime armi col C, ho urgente bisogno di risolvere questo
quesito,sotto riportato,cioè devo scrivere un programmino che soddisfi le
specifiche date..e questo è ovvio:-)))
Ho già iniziato una probabile soluz ma sono certo che ci sia qualche
errore.oltretutto non so proprio dove iniziare per risolvere il terzo punto
dell'esercizio.
Spero vivamente di trovare qualche anima buona in questo ng disposto a
perdere un pò del suo tempo.. Soprattutto,ripeto,er aiutarmi col terzo punto.
Ringrazio tutti coloro che mi risponderanno anche solo per correggere pochi
passaggi del mio operato.
Saluti,Lollo
In un’agenzia di servizio corriere le richieste giornaliere di ritiro pacchi da spedire sono memorizzate su di una lista collegata (rappresentata tramite strutture/record e puntatori) in memoria centrale.Per ogni richiesta la lista contiene un elemento che specifica:
· l’orario in cui è stata effettuata la richiesta(rappresentato tramite due campi interi,uno per le ore,l’altro per i minuti)
· nome del mittente (stringa max 20 caratteri)
· indirizzo del mitt.( stringa max 40 char)
· sigla della provincia di destinazione(2 caratteri)
La lista è già ordinata per orario crescente.
Si richiede di risolvere i seguenti punti
1- progetta la struttura dati per risolvere i punti 2 e 2
2- Progetta una funz C che , presi in ingresso attraverso opportuni parametri la lista L delle richieste e la sigla P di una provincia,scriva su di un file l’ora,nome e indirizzo del mittente di tutte le richieste in L destinate alla provincia P,una richiesta per riga. Il nome del file deve essere ottenuto concatenando la sigla della provincia P con l’estensione ”.txt”.
3- Progetta una funz C che, presi in ingresso attraverso opportuni parametri la lista L delle richieste di spedii ed un orario T ( specificato in ore,minuti),elimini dalla lista L tutte le richieste effettuate più tardi di T,liberando la memoria occupata dagli elementi eliminati.
Nell’eliminare gli elementi ,si deve tener conto del fatto che la lista è ordinata per orario crescente
Per le richieste rimaste in L,la funz deve inoltre restituire in un opportuno vettore (con una componente per ogni ora della giornata) il num delle richieste effettuate in ciascuna ora della giornata.In altre parole,la componente h del vettore deve contenere il num di richieste effettuate tra h:00 e h:59
Soluzione (un semplice abbozzo)
1)
# include < stdio.h>
#include<stdlib.h>
#iclude<string.h>
# define LUNGNOME 20
# define LUNGIND 40
# define LUNGPROV 2
typedef char [LUNGNOME +1] ;
typedef char [LUNGIND +1] ;
typedef char [LUNGPROV +1] ;
Struct tipoOrario{
Int ore;
Int minuti ; };
typedef tipoorario TipoOrario;
struct TipoRichiesta{
TipoOrario orario;
TipoNome nome;
TipoIndirizzo indirizzo;
TipoProvincia pv;
typedef struct tipoRichiesta NodoRichieste ;
typedef Nodorichiesta *Tipolistarichiesta
2)
void individuarichieste (tipolistarichiesta lis tipoprovincia pv)
{tipolistarichiesta aux;
FILE * pv.txt,
if((pv.txt=fopen(“pv.txt”,”w”))= =null){
printf (“errore in apertura del file “pv.txt”);
exit (1);}
while (lis != null){
if(stamp (aux®pv,pv)= = 0)
fprint(“pv.txt”, "% d : %d %20s %40s %2s " ,lis.ore®pv,
lis.minuti®pv, lis.nome®pv, lis.indirizzo®pv, lis.pv®pv);
lis=lis®next;}
fclose(pv.txt);
}
3)?