Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Esercitazioni Lab Ingegneria Informatica: Profitti Massimi e Concatenazione Stringhe, Appunti di Algoritmi E Programmazione Avanzata

Due esercizi da svolgere in laboratorio per i corrispettivi corsi di algoritmi e programmazione avanzata i e ii del corso di laurea in ingegneria informatica presso il politecnico di torino. L'esercizio 1 richiede la creazione di un programma c per calcolare il profitto massimo realizzabile da una pasticceria a partire dall'elenco degli ingredienti disponibili e dalla descrizione dei prodotti dolciari. L'esercizio 2 richiede la creazione di un programma c per determinare la stringa più lunga possibile concatenando un insieme di parole fornite in un file, rispettando le regole di concatenazione specificate. Esempi e dettagli sui formati dei file di input.

Tipologia: Appunti

2010/2011

Caricato il 19/01/2011

martina.fregio
martina.fregio 🇮🇹

4.3

(309)

53 documenti

1 / 2

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
POLITECNICO DI TORINO
CORSO DI LAUREA IN INGEGNERIA INFORMATICA
CORSO DI ALGORITMI E PROGRAMMAZIONE AVANZATA I & II
Esercitazione di laboratorio n. 10
La corretta implementazione della funzione di risoluzione del primo esercizio sarà oggetto di
valutazione ai fini dell’attribuzione del punteggio per i laboratori.
Esercizio n. 1: profitti di una pasticceria.
Un file descrive il contenuto della dispensa di un laboratorio di pasticceria. Il suo formato è il seguente:
la prima riga contiene il numero ni di ingredienti a disposizione;
ognuna delle ni righe successive riporta il nome di un ingrediente (stringa di al più 20 caratteri,
senza spazi) e la sua disponibilità (intero non negativo).
Ad esempio, il file potrebbe contenere le informazioni (sono visualizzate solo alcune righe):
15
Farina 19
Zucchero 23
Uova 12
Latte 9
Cacao 11
...
Un altro file contiene la descrizione dei prodotti dolciari che è possibile realizzare, con il seguente formato:
la prima riga contiene il numero np di possibili prodotti;
per ognuno degli np prodotti:
o compare una riga iniziale composta dai campi
<nome> <prezzo> <numero_ingredienti>
dove <nome> indica il nome del prodotto (stringa), <prezzo> il suo prezzo di vendita (intero
positivo) e <numero_ingredienti> il numero nn di ingredienti necessari alla realizzazione
del prodotto.
o seguono, quindi, nn righe, ciascuna delle quali con il nome di un ingrediente e la quantità
necessaria per la preparazione del prodotto in oggetto (le unità di misura, non specificate, sono
intese essere consistenti con quelle del file con la descrizione della dispensa).
Ad esempio, il file potrebbe contenere le informazioni (sono visualizzate solo alcune righe):
9
Uova_di_Pasqua 6 2
Cacao 5
Latte 2
Torta_Sacher 22 3
Farina 3
Cacao 8
Marmellata 2
Torta_Mimosa 18 5
...
Si richiede un programma C che, dopo aver letto i due file (memorizzandone il contenuto in un opportuna
struttura dati), calcoli e visualizzi il profitto massimo che il gestore della pasticceria può realizzare. Il profitto
è inteso come la somma dei prezzi di vendita di tutti i prodotti che è possibile realizzare a partire dagli
ingredienti a disposizione. Si visualizzi, inoltre, “l’ordine ideale” (numero di prodotti dolciari di ogni tipo)
che la pasticceria dovrebbe ricevere per realizzare tale profitto.
pf2

Anteprima parziale del testo

Scarica Esercitazioni Lab Ingegneria Informatica: Profitti Massimi e Concatenazione Stringhe e più Appunti in PDF di Algoritmi E Programmazione Avanzata solo su Docsity!

POLITECNICO DI TORINO

CORSO DI LAUREA IN INGEGNERIA INFORMATICA

CORSO DI ALGORITMI E PROGRAMMAZIONE AVANZATA I & II

Esercitazione di laboratorio n. 10

La corretta implementazione della funzione di risoluzione del primo esercizio sarà oggetto di

valutazione ai fini dell’attribuzione del punteggio per i laboratori.

Esercizio n. 1 : profitti di una pasticceria.

Un file descrive il contenuto della dispensa di un laboratorio di pasticceria. Il suo formato è il seguente:

  • la prima riga contiene il numero ni di ingredienti a disposizione;
  • ognuna delle ni righe successive riporta il nome di un ingrediente (stringa di al più 20 caratteri, senza spazi) e la sua disponibilità (intero non negativo).

Ad esempio, il file potrebbe contenere le informazioni (sono visualizzate solo alcune righe):

15 Farina 19 Zucchero 23 Uova 12 Latte 9 Cacao 11 ...

Un altro file contiene la descrizione dei prodotti dolciari che è possibile realizzare, con il seguente formato:

  • la prima riga contiene il numero np di possibili prodotti;
  • per ognuno degli np prodotti: o compare una riga iniziale composta dai campi <numero_ingredienti> dove indica il nome del prodotto (stringa), il suo prezzo di vendita (intero positivo) e <numero_ingredienti> il numero nn di ingredienti necessari alla realizzazione del prodotto. o seguono, quindi, nn righe, ciascuna delle quali con il nome di un ingrediente e la quantità necessaria per la preparazione del prodotto in oggetto (le unità di misura, non specificate, sono intese essere consistenti con quelle del file con la descrizione della dispensa).

Ad esempio, il file potrebbe contenere le informazioni (sono visualizzate solo alcune righe):

9 Uova_di_Pasqua 6 2 Cacao 5 Latte 2 Torta_Sacher 22 3 Farina 3 Cacao 8 Marmellata 2 Torta_Mimosa 18 5 ...

Si richiede un programma C che, dopo aver letto i due file (memorizzandone il contenuto in un opportuna struttura dati), calcoli e visualizzi il profitto massimo che il gestore della pasticceria può realizzare. Il profitto è inteso come la somma dei prezzi di vendita di tutti i prodotti che è possibile realizzare a partire dagli ingredienti a disposizione. Si visualizzi, inoltre, “l’ordine ideale” (numero di prodotti dolciari di ogni tipo) che la pasticceria dovrebbe ricevere per realizzare tale profitto.

Esercizio n. 2 : concatenazione di stringhe.

Sia dato un insieme di parole (stringhe) di lunghezza arbitraria, memorizzate in un file in ragione di

una per riga. La prima linea del file specifica il numero di parole presenti nel seguito.

Scrivere un programma C che determini la lunghezza della stringa più lunga realizzabile utilizzando

le seguenti regole:

  • ciascuna parola può essere usata al più N volte, con N intero specificato in ingresso.
  • due stringhe sa e sb sono concatenabili se l'ultima coppia di caratteri di sa coincide con la

prima coppia di caratteri di sb.

  • la concatenazione si ottiene sovrapponendo tali coppie di caratteri.

Ad esempio, se sa = "giorno" e sb = "notte", allora sa concatenato sb = "giornotte".

  • l’ordine con cui le parole compaiono nel file non è vincolante per la generazione della

stringa di lunghezza massima.

Esempio

Supponendo che N sia pari a 2 e che il contenuto del file di ingresso sia:

novara torino vercelli ravenna napoli livorno messina noviligure roma

il programma deve produrre il risultato 50, pari alla lunghezza della stringa:

"torinovaravennapolivornovaravennapolivornoviligure".

POSSIBILE VARIANTE

Modificare il programma precedente in modo che esso individui anche il sottoinsieme di parole che

consente di generare la stringa di lunghezza massima.

Il programma deve stampare su standard output le parole appartenenti al sottoinsieme determinato

nell’ordine della concatenazione, nonché la stringa più lunga trovata.

Esempio

Supponendo lo stesso file di ingresso e un valore di N pari a 2, il programma deve stampare a video

quanto riportato di seguito:

Parole utilizzate: torino novara ravenna napoli livorno noviligure

La stringa piu' lunga ottenibile (50 caratteri) e':

"torinovaravennapolivornovaravennapolivornoviligure"