Gestione di un banco di magliette

Slides:



Advertisements
Presentazioni simili
Uso avanzato di C.
Advertisements

Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Esercizi su alberi binari
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 -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
// PROTOTIPI void costruisciLista(Pnodo &, string &); void stampaLista(Pnodo ); void creaNodo (int, Pnodo&); Pnodo inserisciNodoTesta (int,Pnodo &); Pnodo.
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
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Esercizi C sui tipi definiti dall’utente
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
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); …………………
Esercizi Liste.
Esercizi su File e Liste
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
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
CORSO DI PROGRAMMAZIONE II
Prog2 a.a. 2001/ Albero binario di ricerca Un albero binario di ricerca é un albero binario in cui ogni nodo ha un’etichetta.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
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
Esercitazioni di Prog. II (esercizi su alberi ennari)
Struct, enum, Puntatori e Array dinamici
Il linguaggio C Strutture Moreno Marzolla
10. Programmazione Ricorsiva Ing. Simona Colucci
Array n-dimensionali e tipi di dati strutturati
Le postcondizioni specificano l’output della funzione.
Ambienti di Programmazione per il Software di Base
Esercitazioni di Prog. II (esercizi _aggiuntivi_su alberi binari)
Linearizzazione di un sensore
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C Strutture Dati e Puntatori
Programmazione e Laboratorio di Programmazione
Linearizzazione di un sensore
Tipo String String è una classe predefinita
Programmazione e Laboratorio di Programmazione
© 2007 SEI-Società Editrice Internazionale, Apogeo
Alberi n-ary Lezioni di C.
APPUNTI SUL LINGUAGGIO C
Gestione di un ristorante
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 sugli array e strutture
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
APPUNTI SUL LINGUAGGIO C
Array n-dimensionali e tipi di dati strutturati
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Script su vettori Realizza uno script che chiede in input una dimensione d e crea un vettore di d numeri interi casuali. Poi calcola la somma dei due numeri.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Gestione di un banco di magliette

Gestione di un banco di magliette Vogliamo gestire un banco di magliette: queste sono caratterizzate da un codice (alfanumerico di max 20 caratteri), colore, marca, taglia e prezzo; possono esserci copie per ogni singolo modello di maglietta, organizzate in un archivio, costituito da record di due campi (il codice della maglia e il numero di copie disponibili). Codice n°copie Adc 2 Ght 3 …

Gestione di un banco di magliette Vogliamo implementare: tipi per rappresentare una lista di magliette; metodo che verifica se c’è una copia disponibile per una data maglietta (codice in input) metodo per la vendita di una maglia: bisogna decrementare nell’archivio il numero di copie relativo al codice della maglietta venduta. Se il numero di copie corrispondente è 0 la maglia non può essere venduta. Il metodo restituirà un booleano (true se la maglia è stata venduta, false altrimenti); metodo per inserire una nuova maglia in una lista di magliette (anche nuovo record nell’archivio con n° copie settato a 1); metodo per modificare il prezzo di una maglietta nella lista (in input codice e prezzo); metodo per stampare i codici delle maglie esaurite (n° di copie pari a zero).

#include <stdio.h> #include <stdlib.h> #include <string.h> typedef char stringa[20]; typedef struct { stringa codice; stringa colore; stringa marca; stringa taglia; int prezzo; } maglia; typedef struct elem{ maglia info; struct elem* next; } elist; typedef elist* plist; typedef struct { stringa cd; int n; } copia; typedef struct elem2{ copia info; struct elem2* next; } elist2; typedef elist2* plist2;

void insertcopia(plist2* A, copia c) { plist2 temp = (plist2)malloc(sizeof(elist2)); strcpy((temp->info).cd,c.cd); (temp->info).n = c.n; temp->next=*A; *A = temp; } void creamaglie(plist2* A){ copia c1 = {"abc",0}; insertcopia(A,c1); copia c2 = {"acd",1}; insertcopia(A,c2); copia c3 = {"afc",2}; insertcopia(A,c3);

Gestione di un banco di magliette disponibilità Codice n°copie Adc 2 Ght 3 Abc 1 Ghg 0 …

Gestione di un banco di magliette disponibilità ... scorriamo l’archivio

Gestione di un banco di magliette disponibilità Codice n°copie Adc 2 Ght 3 Abc 0 Ghg 0 … Codice n°copie Adc 2 Ght 3 Abc 1 Ghg 0 …

Gestione di un banco di magliette disponibilità Codice n°copie Adc 2 Ght 3 Abc 1 Ghg 0 … nessuna disponibilità

int disponibile(stringa cod, plist2 A) { while (A != NULL) if (!strcmp((A->info).cd,cod)) if (A->info.n > 0) return 1; else return 0; else A = A->next; return 0; }

int vendita(stringa cod, plist2 A) { while (A != NULL) if (!strcmp((A->info).cd,cod)) if (A->info.n > 0){ (A->info.n)--; return 1; } else return 0; else A = A->next; return 0;

plist insertmaglia(plist l, maglia m, plist2* A) { copia c; plist temp = (plist)malloc(sizeof(elist)); strcpy(temp->info.codice,m.codice); strcpy(temp->info.colore,m.colore); strcpy(temp->info.marca,m.marca); strcpy(temp->info.taglia,m.taglia); temp->info.prezzo=m.prezzo; temp->next=l; strcpy(c.cd,m.codice); c.n=1; insertcopia(A,c); return temp; }

void modifica(plist l, stringa cod, int pr) { plist temp=l; int test=0; while ((!test)&&(temp!=NULL)) { if (!strcmp(temp->info.codice,cod)) { test=1; temp->info.prezzo=pr; } else temp=temp->next;

void stampa(plist2 A) { while (A != NULL){ if (A->info.n == 0) printf("%s\n",A->info.cd); A = A->next; }