Gestione di un ristorante

Slides:



Advertisements
Presentazioni simili
1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Advertisements

Uso avanzato di C.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Esercizi su strutture dinamiche Fondamenti di Programmazione Canale AD a.a. 2009/2010.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di Programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli Corso.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Laboratorio di Linguaggi lezione IX: tipi ricorsivi Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
// PROTOTIPI void costruisciLista(Pnodo &, string &); void stampaLista(Pnodo ); void creaNodo (int, Pnodo&); Pnodo inserisciNodoTesta (int,Pnodo &); Pnodo.
LdL - LP1 - ver. 6 - lez aa Linguaggi di programmazione I La ricorsione Prof. Luigi Di Lascio Lezione 10.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Esercizi su alberi binari
Struct, enum, Puntatori e Array dinamici
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Le liste dinamiche La ricorsione
Sorting: MERGESORT Vogliamo ordinare lista (a 1,…,a n ). 1.Dividi lista in 2 sottoliste aventi (quasi) la stessa dimensione: (a 1,a 3,a 5,…) e (a 2,a 4,…),
void binario(int n); …………………
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercizi su File.
Esercizi Liste.
Esercizi su File e Liste
Tail recursion: esempio
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Esercitazioni su liste
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
13. Strutture dati dinamiche Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Esercitazioni di Prog. II (esercizi su alberi ennari)
Struct, enum, Puntatori e Array dinamici
10. Programmazione Ricorsiva Ing. Simona Colucci
Le postcondizioni specificano l’output della funzione.
Strutture classi e oggetti
Record.
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
APPUNTI SUL LINGUAGGIO C Strutture Dati e Puntatori
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Alberi n-ary Lezioni di C.
APPUNTI SUL LINGUAGGIO C
Gestione di un banco di magliette
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
APPUNTI SUL LINGUAGGIO C
comprensione e modifica di codice
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
LINGUAGGIO C Alberi e livelli
APPUNTI SUL LINGUAGGIO C Simulazione Prima Prova Intermedia
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Alberi Binari – primi esercizi
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Gestione di un ristorante Esercitazione: Gestione di un ristorante Dobbiamo gestire le ordinazioni che fanno i clienti in un ristorante: esiste un menù contenente il nome del piatto e il prezzo relativo; immaginiamo di avere a disposizione un archivio menu fatto nel seguente modo Pasta al ragù 5 Pasta al pesto 4 …

Gestione di un ristorante Esercitazione: Gestione di un ristorante Pensiamo che ai tavoli ci siano clienti e che un’ordinazione sia semplicemente la richiesta di un piatto. Per ogni piatto ci sarà un’ordinazione a cui leghiamo il nome del singolo cliente.

Gestione di un ristorante Esercitazione: Gestione di un ristorante I clienti possono fare delle ordinazioni: il ristorante deve gestire un elenco di ordinazioni ed ogni ordinazione contiene informazioni Nome e Cognome del cliente nome del piatto prezzo del piatto

Gestione di un ristorante Esercitazione: Gestione di un ristorante Bisogna implementare le strutture dati adeguate. menu (piatto, costo) ordinazione (nome, cognome, piatto, costo)

Gestione di un ristorante Esercitazione: Gestione di un ristorante #include <stdio.h> #include <stdlib.h> #include <string.h> typedef char stringa[20]; typedef struct { stringa nome; stringa cognome; stringa piatto; int costo; } ordinazione; typedef struct elem{ ordinazione info; struct elem* next; } elist; typedef elist* plist; typedef struct { stringa piatto; int costo; } menu; typedef struct elem2{ menu info; struct elem2* next; } elist2; typedef elist2* plist2;

Gestione di un ristorante Esercitazione: Gestione di un ristorante Bisogna implementare i seguenti metodi: un metodo che inserisca nell’elenco una nuova ordinazione (avendo in input nome e cognome del cliente, e nome del piatto)

Gestione di un ristorante Esercitazione: Gestione di un ristorante nuova ordinazione

Gestione di un ristorante Esercitazione: Gestione di un ristorante void insert(plist *l, stringa nm, stringa cm, stringa pt, plist2 l2) { plist temp = (plist)malloc(sizeof(elist)); strcpy(temp->info.nome,nm); strcpy(temp->info.cognome,cm); strcpy(temp->info.piatto,pt); int test=0; while ((!test)&&(l2 != NULL)) if (strcmp(pt,l2->info.piatto)) { temp->info.costo=(l2->info).costo; test = 1; } else l2 = l2->next; if (test==0) {printf(“Piatto inesistente nel menu\n"); return;} temp->next=*l; *l=temp;

Gestione di un ristorante Esercitazione: Gestione di un ristorante Bisogna implementare i seguenti metodi: un metodo che inserisca nell’elenco una nuova ordinazione (avendo in input nome e cognome del cliente, e nome del piatto) un metodo che elimini dall’elenco le ordinazioni fatte da un cliente (dando in input nome e cognome)

Gestione di un ristorante Esercitazione: Gestione di un ristorante elimina ordinazione

Gestione di un ristorante Esercitazione: Gestione di un ristorante elimina ordinazione SI

Gestione di un ristorante Esercitazione: Gestione di un ristorante elimina ordinazione NO

Gestione di un ristorante Esercitazione: Gestione di un ristorante void elimina(plist *l, stringa nm, stringa cm) { plist temp,temp2,temp3; temp2=*l; temp=(*l)->next; while (temp!=NULL) { if ((strcmp(temp->info.nome,nm))&&(strcmp(temp->info.cognome,cm))) { temp3=temp; temp=temp->next; temp2->next=temp; free(temp3); } else { temp2=temp2->next; if ((strcmp(*l->info.nome,nm))&&(strcmp(*l->info.cognome,cm))){ temp3=*l; *l=*l->next;

Gestione di un ristorante Esercitazione: Gestione di un ristorante Bisogna implementare i seguenti metodi: un metodo che inserisca nell’elenco una nuova ordinazione (avendo in input nome e cognome del cliente, e nome del piatto) un metodo che elimini dall’elenco le ordinazioni fatte da un cliente (dando in input nome e cognome) un metodo che calcoli il numero di ordinazioni con un certo piatto (dando in input il nome del piatto) calcoli la spesa di un cliente (in input nome e cognome)

Gestione di un ristorante Esercitazione: Gestione di un ristorante int num(plist l,stringa pt) { plist temp=l; int cont=0; while(temp!=NULL) { if (strcmp(temp->info.piatto,pt)){ cont++; temp=temp->next; } else temp=temp->next; return cont;

Gestione di un ristorante Esercitazione: Gestione di un ristorante int spesa(plist l,stringa nm,stringa cm){ plist temp=l; int cont=0; while(temp!=NULL) { if ((strcmp(temp->info.nome,nm))&&(strcmp(temp->info.cognome,cm))){ cont+=temp->info.costo; temp=temp->next; } else temp=temp->next; return cont;