giuly7
02-07-2012, 18:24
Ciao a tutti! Mi trovo a scrivere perchè ho implementato il seguente programma:
arco_pesato(roma,firenze,3).
arco_pesato(firenze,genova,3).
arco_pesato(genova,torino,2).
arco_pesato(torino,milano,2).
arco_pesato(torino,aosta,1).
arco_pesato(firenze,bologna,2).
arco_pesato(bologna,venezia,2).
arco_pesato(venezia,trento,2).
arco_pesato(venezia,trieste,2).
arco_pesato(napoli,potenza,2).
arco_pesato(palermo,cagliari,9).
arco_pesato(potenza,bari,2).
arco_pesato(potenza,catanzaro,4).
arco_pesato(catanzaro,palermo,5).
arco_pesato(roma,laquila,1).
arco_pesato(laquila,campobasso,3).
arco_pesato(laquila,ancona,2).
arco_pesato(campobasso,napoli,2).
calcola_itinerario:- write('Salve, le diamo in benvenuto nella nostra agenzia turistica virtuale.Le proporremo, partendo da Roma un percorso turistico interessante.'), write('Inserisca la localita" di arrivo:'),nl, read(X), ricerca_localita('roma',X).
ricerca_localita(X,X):- write('buona visita della citta"'),nl.
ricerca_localita(X,Y):-ricerca(X,Y,L,[X]),
tab(3),reverse_append(L,_).
ricerca(X,X,L,L).
ricerca(X,Y,L,P):- arco_pesato(X,W,_),
ricerca(W,Y,L,[W|P]).
reverse_append([],[]).
reverse_append([A|C],Q):-reverse_append(C,K),
append(K,[A],Q), write(A), write(' ').
In questo modo mi viene stampata la lista dell'intero itinerario.. Il mio problema sta nel visualizzare al termine della stringa la somma di tutti i pesi:
ad esempio, l'utente che vuole andare a torino leggerà: roma firenze genova torino 8
Grazie ancora! :)
arco_pesato(roma,firenze,3).
arco_pesato(firenze,genova,3).
arco_pesato(genova,torino,2).
arco_pesato(torino,milano,2).
arco_pesato(torino,aosta,1).
arco_pesato(firenze,bologna,2).
arco_pesato(bologna,venezia,2).
arco_pesato(venezia,trento,2).
arco_pesato(venezia,trieste,2).
arco_pesato(napoli,potenza,2).
arco_pesato(palermo,cagliari,9).
arco_pesato(potenza,bari,2).
arco_pesato(potenza,catanzaro,4).
arco_pesato(catanzaro,palermo,5).
arco_pesato(roma,laquila,1).
arco_pesato(laquila,campobasso,3).
arco_pesato(laquila,ancona,2).
arco_pesato(campobasso,napoli,2).
calcola_itinerario:- write('Salve, le diamo in benvenuto nella nostra agenzia turistica virtuale.Le proporremo, partendo da Roma un percorso turistico interessante.'), write('Inserisca la localita" di arrivo:'),nl, read(X), ricerca_localita('roma',X).
ricerca_localita(X,X):- write('buona visita della citta"'),nl.
ricerca_localita(X,Y):-ricerca(X,Y,L,[X]),
tab(3),reverse_append(L,_).
ricerca(X,X,L,L).
ricerca(X,Y,L,P):- arco_pesato(X,W,_),
ricerca(W,Y,L,[W|P]).
reverse_append([],[]).
reverse_append([A|C],Q):-reverse_append(C,K),
append(K,[A],Q), write(A), write(' ').
In questo modo mi viene stampata la lista dell'intero itinerario.. Il mio problema sta nel visualizzare al termine della stringa la somma di tutti i pesi:
ad esempio, l'utente che vuole andare a torino leggerà: roma firenze genova torino 8
Grazie ancora! :)