Lab 9 Strutture e programmi su più file

Documenti analoghi
Lab 9 Strutture e programmi su più file

Esercizio 1. Esercizio - 1

Lab 13 Strutture e programmi su più file "

Lab 09 Strutture e programmi su più file

Lab 13 Strutture e programmi su più file

Esercizio 1. Esercizio - 1

Esercizio sintesi (1) Esercizio sintesi (1)

Fondamenti di Informatica T-1 a.a. 2009/2010

Fondamenti di Informatica T-1. a.a. 2009/2010

ESERCIZIO 1 (stringhe)

Fondamenti di Informatica T-1

Lab 16 Gestione file binari"

Strutture. struct [<etichetta>] { { <definizione-di-variabile> } } <nomestruttura>

Fondamenti di Informatica T-1

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Lab 16 Gestione file binari"

Lab 11 Gestione file binari

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A

Lab 12 Allocazione dinamica della memoria

Esercizio 1 Soluzione

Opinione calcolamedia( ) Opinione inverti( )

Lab 10 Gestione file di testo

Lab 16 Gestione file binari

Esercizio 1. Esercizio 1

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2

STRUCT - ESERCIZIO 1

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 5A di Giovedì 9 Luglio 2015 tempo a disposizione 2h

Lab 08 Stringhe e strutture

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1

Esercizio 1 Domanda di teoria (13 punti)

Lab 09 Gestione file di testo

Lab 10 Passaggio per riferimento

Ricerca binaria ricorsiva!

NOTA SULLA CORREZIONE: Per ottenere un esito positivo è necessario svolgere un elaborato sufficiente in entrambe le parti.

1. Realizzare una funzione: int trovaritardatari(file *fprestiti, FILE *frate, Prestito *dest, int dim)

Lab 7 Passaggio per riferimento

Esercizio 1 - Soluzione (array)

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A

ESERCIZIO Grammatiche (1) ESERCIZIO Grammatiche (1) Espressioni algebriche

Esercizio 1. Esercizio 1 - Soluzione

Esercizio 1: media di numeri reali (uso funzioni e struct)

Lab 17 Allocazione dinamica della memoria

Lab 11 Allocazione dinamica della memoria

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 1A di Giovedì 14 Gennaio 2016 tempo a disposizione 2h

PROVA PRATICA DI FONDAMENTI DI INFORMATICA L-A Prof. MICHELA MILANO 25 NOVEMBRE 2004 COMPITO A

#include <stdio.h> #include <stdlib.h> #define L 20 void Proc(char [], int); int N=L; main () { char *s; int i;

Lab 10 Passaggio per riferimento

Esercizio 1 - Soluzione

Lab 08 Stringhe e strutture

Fondamenti di Informatica T-1, 2016/2017 Modulo 2. Prova d Esame 4A di Giovedì 15 Giugno 2017 tempo a disposizione 2h

Esercizio 1: calcolo insieme intersezione

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 3A di Mercoledì 16 Febbraio 2011 tempo a disposizione 2h

Esercitazione 6. Array

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Fondamenti di Informatica T-1, 2012/2013 Modulo 2. Prova d Esame 6A di Giovedì 12 Settembre 2013 tempo a disposizione 2h

Fondamenti di Informatica T1 Prova Pratica - Luglio 2013 Compito

ESERCIZIO: SHIFT ARRAY (1)

Esercizio 1 Conta degli elementi distinti (file esercizio1.c e leggi.h/leggi.c - 15 punti)

Lab 12 Stringhe e strutture

ESERCIZIO allochi staticamente un vettore V1 di 10 float e allochi dinamicamente un vettore V2 di 10 double;

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Fondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 1A di Giovedì 9 Gennaio 2014 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 1B di Mercoledì 19 Gennaio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 1A di Martedì 13 Gennaio 2015 tempo a disposizione 2h

TIPI DI DATO. T = { D, {F 1,...,F n }, {P 1,...,P m } } Un tipo di dato T è definito come:

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Esercizio 1. Esercizio 1 Soluzione

T = { D, {F 1,...,F n }, {P 1,...,P m } }

SIMULAZIONE Fondamenti di Informatica T-1 Prova di Laboratorio - 14 Dicembre 2009 Compito B

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd)

Esercizio 1 - Soluzione

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 6A di Giovedì 8 Settembre 2016 tempo a disposizione 2h

Lab 12 Stringhe e strutture

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 3A di Venerdì 12 Febbraio 2016 tempo a disposizione 2h

Esercizio 1. Esercizio 1 - Soluzione

Stringhe e allocazione dinamica della memoria

- matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc)

Fondamenti di Informatica T-1, 2011/2012 Modulo 2. Prova d Esame 3A di Giovedì 9 Febbraio 2012 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 2A di Martedì 29 Gennaio 2015 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2016/2017 Modulo 2. Prova d Esame 3A di Giovedì 16 Febbraio 2017 tempo a disposizione 2h

Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica

Fondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 6A di Giovedì 11 Settembre 2014 tempo a disposizione 2h

Esercizio 1: parole nel testo

Transcript:

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 9 Strutture e programmi su più file Lab09 1

n Sia data la struttura Esercizio 1 struct time { int hour, minute, second; ; n Per semplicità si può definire il tipo Time typedef struct time Time; Lab09 2

Esercizio 1 Si realizzi in un modulo tempo.h/tempo.c un insieme di funzioni per la gestione del tipo Time. In particolare: n n Si realizzi una funzione Time leggitime() che legga da input ore, minuti e secondi, e restituisca una struttura di tipo Time opportunamente inizializzato coi valori letti Si realizzi una funzione int leggimoretimes(time v[], int dim) La funzione deve leggere da input delle strutture Time (a tal scopo si utilizzi la funzione definita sopra) e salvarle nel vettore v, di dimensione fisica dim. La funzione deve restituire il numero di elementi letti. La lettura termina se l utente inserisce un tempo con ora negativa. Lab09 3

Esercizio 1 n Si progetti una funzione in grado di calcolare la differenza fra due strutture Time e che restituisca il risultato in termini di una nuova struttura Time n L interfaccia della funzione è facilmente desumibile dalle specifiche: Time subtract(time t1, Time t2); n Due possibili approcci: 1. Trasformare in secondi, eseguire la differenza, trasformare in ore, minuti, secondi 2. Eseguire la sottrazione direttamente tenendo conto dei riporti Lab09 4

File Tempo.h #include <stdio.h> #ifndef TEMPO_H #define TEMPO_H Esercizio 1 Soluzione struct time { int hour, minute, second; ; typedef struct time Time; #endif Time leggitime(); int leggimoretimes(time v[], int dim); Time subtract1(time t1, Time t2); Time subtract2(time t1, Time t2); Lab09 5

File Tempo.c #include "tempo.h" Esercizio 1 Soluzione Time leggitime() { Time result; printf("ore: "); scanf("%d", &result.hour ); printf("minuti: "); scanf("%d", &result.minute ); printf("secondi: "); scanf("%d", &result.second ); return result; Lab09 6

File Tempo.c Esercizio 1 Soluzione int leggimoretimes(time v[], int dim) { int result; Time temp; result = 0; do { temp = leggitime(); if (temp.hour>=0 && result<dim) { v[result] = temp; result++; while (temp.hour>=0 && result<dim); return result; Lab09 7

Esercizio 1 Soluzione File Tempo.c Time subtract1(time t1, Time t2) { int s1, s2, sresult; Time result; s1 = t1.hour * 3600 + t1.minute * 60 + t1.second; s2 = t2.hour * 3600 + t2.minute * 60 + t2.second; sresult = s1 - s2; result.hour = sresult / 3600; sresult = sresult % 3600; result.minute = sresult / 60; sresult = sresult % 60; result.second = sresult; return result; Lab09 8

File Tempo.c Esercizio 1 Soluzione Time subtract2(time t1, Time t2) { Time result; int carry; result.second = t1.second - t2.second; carry = 0; if (result.second < 0) { result.second = 60 + result.second; carry = -1; result.minute = t1.minute - t2.minute + carry; carry = 0; if (result.minute < 0) { result.minute = 60 + result.minute; carry = -1; result.hour = t1.hour - t2.hour + carry; return result; Lab09 9

Esercizio 2 Una compagnia di autobus che effettua servizio su lunghe distanze vuole realizzare un programma di controllo delle prenotazioni dei posti. A tal scopo rappresenta ogni prenotazione tramite una struttura booking contenente nome del cliente (al massimo 1023 caratteri, senza spazi) e numero del posto prenotato (un intero). Le prenotazioni effettuate vengono registrate tramite un array (di dimensione prefissata DIM) di strutture booking, di dimensione logica iniziale pari a 0. Si realizzi il modulo C gestione.h/gestione.c, contenente la struttura dati booking e le seguenti funzioni Lab09 10

a) Si realizzi una funzione: Esercizio 2 int leggi(booking * dest); La funzione legge da input una struttura di tipo booking, e provvede a memorizzarla in dest. La funzione deve restituire 1 se è stata letta una nuova prenotazione, 0 altrimenti (cioè nel caso in cui il nome del passeggero è fine ). Lab09 11

Esercizio 2 b) Si realizzi una funzione: int assegna( booking list[], int dim, int * lengthlist, char * name, int pref) La funzione riceve in ingresso l array di prenotazioni e la sua dimensione fisica e logica, e poi il nome del cliente ed il posto da lui indicato. La funzione deve controllare che il posto indicato non sia già stato assegnato, ed in caso contrario deve restituire il valore 1. Lab09 12

Esercizio 2 Qualora invece il posto sia ancora libero, la funzione deve assegnare tale posto al cliente copiando i dati della prenotazione nell ultima posizione libera nell array, e deve provvedere ad aggiornare correttamente la dimensione logica dell array. In questo secondo caso la funzione deve invece restituire come valore uno 0, indicante il successo nella prenotazione. Al fine di copiare il nome del cliente, si utilizzi la funzione di libreria char * strcpy(char * s, char * ct) che copia ct in s (terminatore compreso). Lab09 13

Esercizio 2 c) Si realizzi un programma main (file main.c) che chieda all operatore il nome di un utente, e di seguito il posto prescelto (a tal fine si usi la funzione di cui al punto a) ). Il programma deve cercare di registrare la prenotazione tramite la funzione assegna; qualora l operazione di prenotazione fallisca (perché il posto risulta essere già assegnato), il programma provveda a chiedere all operatore un nuovo posto, finché non si riesca ad effettuare la prenotazione. Lab09 14

Esercizio 2 Qualora l operatore inserisca il nome fine, il programma deve terminare; qualora invece venga inserita la stringa stampa, il programma deve stampare a video le prenotazioni già effettuate. A tal scopo si usi la funzione di libreria: int strcmp(char * ct, char * cs) che restituisce 0 se e solo se le due stringhe sono identiche (lessicograficamente). Lab09 15

Esercizio 2 Soluzione File gestione.h : #include <stdio.h> #include <string.h> #define MAX 1024 #define DIM 10 #ifndef GESTIONE_H #define GESTIONE_H typedef struct { char name[max]; int seat; booking; #endif int leggi(booking * dest); int assegna( booking list[], int * lengthlist, int dim, char * name, int pref); int assegna2( booking list[], int * lengthlist, int dim, booking temp); int stampabooking(booking list[], int lengthlist); Lab09 16

Esercizio 2 Soluzione File gestione.c : #include "gestione.h int leggi(booking * dest) { printf("inserire il nome: "); scanf("%s", (*dest).name ); if (strcmp("fine", dest->name)==0 strcmp("stampa", dest->name)==0) return 0; else { printf("posto preferito: "); scanf("%d", &(dest->seat)); return 1;... Lab09 17

Esercizio 2 Soluzione int assegna( booking list[], int * lengthlist, int dim, char * name, int pref) { int i=0; int trovato = 0; while (( i < *lengthlist) &&!trovato) { if (list[i].seat == pref) trovato = 1; i++; if (!trovato && *lengthlist<dim) { list[*lengthlist].seat = pref; strcpy(list[*lengthlist].name, name); (*lengthlist)++; return 0; else return 1; Lab09 18

Esercizio 2 Soluzione int assegna2( booking list[], int * lengthlist, int dim, booking temp) { int i=0; int trovato = 0; while ( (i < *lengthlist) &&!trovato) { if ( list[i].seat == temp.seat ) trovato = 1; i++; if (!trovato && *lengthlist<dim) { list[*lengthlist] = temp; (*lengthlist)++; return 0; else return 1; Lab09 19

Esercizio 2 Soluzione int stampabooking(booking list[], int lengthlist) { int i=0; for (i=0; i<lengthlist; i++) printf("%s: %d\n", list[i].name, list[i].seat); return 0; Lab09 20

Esercizio 2 Soluzione File main.c : #include <stdio.h> #include <string.h> #include "gestione.h int main(void) { booking list[dim]; int lengthlist = 0; booking temp; Lab09 21

Esercizio 2 Soluzione do { if (leggi(&temp)) { if (assegna2(list, &lengthlist, DIM, temp)) printf("posto gia' occupato, pren. non effettuata!\n"); else printf("prenotazione efffettuata con successo!\n"); else { if (strcmp("stampa", temp.name) == 0) stampabooking(list, lengthlist); while (strcmp("fine", temp.name)!= 0 && lengthlist<dim); return (0); Lab09 22

Esercizio 3 Si realizzi il modulo voli.h/voli.c per la gestione di viaggi in aereo. Per memorizzare le informazioni su una singola tratta, si definisca la struttura Flight, contenente il nome della città di partenza e della destinazione (stringhe senza spazi di al più 50 caratteri), insieme all orario di partenza e di arrivo, memorizzate come strutture Time (quelle realizzate nell esercizio 1). Nota: per questo esercizio si richiede di sfruttare il modulo precedentemente sviluppato, che va mantenuto nella coppia di file tempo.h/tempo.c Lab09 23

a) Si realizzi una funzione: Esercizio 3 void readflights(flight * f, int* n, int nmax); La funzione deve leggere da input le informazioni relative ad uno o più voli e memorizzarle nel vettore f. La lettura termina quando l utente inserisce come città di partenza fine. Al termine della lettura, la variabili intere n deve contenere il numero di voli letti. In nessun caso devono essere letti più di nmax voli. Si realizzi un semplice main di prova. Lab09 24

Esercizio 3 a) Si realizzi una funzione: void findflights(flight* f, int n, char* departure, char* destination); La funzione deve stampare a video le informazioni su tutti i voli dalla città departure alla città destination, presenti nell array flights, di dimensione logica n. Si realizzi un semplice main di prova, estendendo quello del passo precedente. Lab09 25

a) Si realizzi una funzione: Esercizio 3 void findhops(flight* f, int n, char* departure, char* destination); La funzione deve stampare a video le informazioni su tutte le coincidenze da departure a destination. Una coincidenza è una coppia di voli in cui la destinazione del primo coincide con la partenza del secondo e l orario di arrivo del primo precede quello di partenza del secondo di almeno 2 ore. Si realizzi un semplice main di prova, estendendo quello del passo precedente. Lab09 26

Esercizio 3 Soluzione File Voli.h #include <stdio.h> #include "time.h" #ifndef VOLI_H #define VOLI_H typedef struct voli { char partenza[50]; char destinazione[50]; Time orapartenza; Time oraarrivo; Flight ; #endif void readflights(flight* f, int* n, int nmax); void findflights(flight* f, int n, char* departure, char* destination); void findhops(flight* f, int n, char* departure, char* destination); Lab09 27

Esercizio 3 Soluzione File Voli.c #include "Voli.h" void readflights(flight* f, int* n, int nmax){ Flight appoggio; int size=0; do { printf("inserisci la citta di partenza\n"); scanf("%s", appoggio.partenza); if (strcmp(appoggio.partenza, "fine")!= 0){ printf("inserisci la citta di destinazione\n"); scanf("%s", appoggio.destinazione); printf("inserisci il tempo di partenza\n"); appoggio.orapartenza = leggitime(); printf("inserisci il tempo di arrivo\n"); appoggio.oraarrivo = leggitime(); f[size] = appoggio; size++; else { printf("esci\n"); while (strcmp(appoggio.partenza, "fine")!= 0 && size<nmax); *n = size; Lab09 28

Esercizio 3 Soluzione void findflights(flight* f, int n, char* departure, char* destination){ int i; for (i = 0; i < n; i++){ if (strcmp(f[i].partenza, departure) == 0 && strcmp(f[i].destinazione, destination) == 0){ printf("volo:\n"); printf("partenza: %s \n", f[i].partenza); printf("arrivo: %s \n", f[i].destinazione); printf("ora PARTENZA: %d %d %d \n", f[i].orapartenza.hour, f[i].orapartenza.minute, f[i].orapartenza.second); printf("ora ARRIVO: %d %d %d \n", f[i].oraarrivo.hour, f[i].oraarrivo.minute, f[i].oraarrivo.second); Lab09 29

Esercizio 3 Soluzione void findhops(flight* f, int n, char* departure, char* destination){ int i, j; Time diff; for (i = 0; i < n; i++){ if (strcmp(f[i].partenza, departure) == 0 ){ for (j = 0; j < n; j++){ if (strcmp(f[j].destinazione, destination) == 0 && strcmp(f[j].partenza, f[i].destinazione) == 0){ diff = subtract1(f[j].orapartenza, f[i].oraarrivo); if (diff.hour>2){ printf("volo1:\n"); printf("partenza: %s \n", f[i].partenza); printf("arrivo: %s \n", f[i].destinazione); printf("ora PARTENZA: %d %d %d \n", f[i].orapartenza.hour, f[i].orapartenza.minute, f[i].orapartenza.second); printf("ora ARRIVO: %d %d %d \n", f[i].oraarrivo.hour, f[i].oraarrivo.minute, f[i].oraarrivo.second); printf("volo2:\n"); printf("partenza: %s \n", f[j].partenza); printf("arrivo: %s \n", f[j].destinazione); printf("ora PARTENZA: %d %d %d \n", f[j].orapartenza.hour, f[j].orapartenza.minute, f[j].orapartenza.second); printf("ora ARRIVO: %d %d %d \n", f[j].oraarrivo.hour, f[j].oraarrivo.minute, f[j].oraarrivo.second); Lab09 30

Esercizio 4 Si realizzino i moduli oggetti.h/oggetti.c, magazzino.h/magazzino.c e vendite.h/vendite.c per la gestione di una attività commerciale. Il modulo oggetti.h/oggetti.c deve definire la struttura Articolo (definita con una typedef), che rappresenta uno degli articoli trattati. Ogni articolo ha un nome (al più 40 caratteri), un costo ed un prezzo (numeri reali). Lab09 31

Esercizio 4 Inoltre, il modulo oggetti.h/oggetti.c deve definire la procedura: void leggilistino(int maxdim, int* dim, Articolo listino[]); Che richiede all utente di inserire le informazioni relative agli articoli trattati. La procedura utilizzerà tali informazioni per riempire l array listino, la cui dimensione logica sarà disponibile al termine dell esecuzione nell intero dim. La procedure termina quando l utente inserisce un articolo con nome fine, o quando maxdim articoli sono stati inseriti. Lab09 32

Esercizio 4 Il modulo magazzino.h/magazzino.c deve definire la procedura: void leggiinventario(int dim,articolo listino[], int inventario[]); Che richiede all utente di inserire le quantità disponibili per ciascuno degli articoli in listino. La procedura deve stampare il nome di ogni articolo prima di richiederne la quantità disponibile (che deve essere non-negativa). La procedura memorizza tali quantità nell array inventario. L intero dim rappresenta la dimensione del listino. Lab09 33

Esercizio 4 Il modulo magazzino.h/magazzino.c deve definire le funzione: int preleva(int i, int dim, int inventario[]); Che riduce di una unità la quantità dell articolo di indice i (se l articolo è ancora disponibile). Si controlli che tale indice sia >= 0 e minore della dimensione del listino dim. La funzione restituisce 1 in caso l operazione sia effettuata correttamente e 0 in caso contrario. Lab09 34

Esercizio 4 Il modulo vendite.h/vendite.c deve definire le procedura: void vendi(int i, int dim, Articolo listino[], float* capitale); Che incrementa il valore di capitale di una quantità pari al profitto (prezzo costo) dell articolo di indice i in listino. L intero dim rappresenta la dimensione del listino. Sia realizzi poi un main che richiede all utente i dati sul listino, sulle quantità di articoli disponibili e proceda quindi alla vendita di un articolo utilizzando sia vendi che preleva. Lab09 35

File oggetti.h #include <stdio.h> #ifndef OGGETTI_H #define OGGETTI_H Esercizio 4 Soluzione typedef struct articolo { char nome[40]; float costo, prezzo; Articolo ; #endif void leggilistino(int maxdim, int* dim, Articolo listino[]); Lab09 36

Esercizio 4 Soluzione File oggetti.c #include "oggetti.h" void leggilistino(int maxdim, int* dim, Articolo listino[]){ Articolo appoggio; int size=0; do { printf("inserisci il nome dell'oggetto\n"); scanf("%s", appoggio.nome); if (strcmp(appoggio.nome, "fine")!= 0){ printf("inserisci il costo dell'oggetto\n"); scanf("%f", &appoggio.costo); printf("inserisci il prezzo dell'oggetto\n"); scanf("%f", &appoggio.prezzo); listino[size] = appoggio; size++; else { printf("esci\n"); while (strcmp(appoggio.nome, "fine")!= 0 && size<maxdim); *dim = size; Lab09 37

File magazzino.h #include "oggetti.h" Esercizio 4 Soluzione void leggiinventario(int dim, Articolo listino[], int inventario[]); int preleva(int i, int dim, int inventario[]); Lab09 38

File magazzino.c #include <stdio.h> #include "magazzino.h" Esercizio 4 Soluzione void leggiinventario(int dim, Articolo listino[], int inventario[]){ int i; int qta; for (i = 0; i < dim; i++){ do { printf("inserire la quantita' per l'articolo %s: \n", listino[i].nome); scanf("%d", &qta); while (qta<0); inventario[i]=qta; Lab09 39

File magazzino.c #include <stdio.h> #include "magazzino.h" Esercizio 4 Soluzione int preleva(int i, int dim, int inventario[]){ if (i<0 i>dim){ return 0; if (inventario[i] > 0){ inventario[i] = inventario[i] - 1; return 1; else { return 0; Lab09 40

File vendite.h #include "oggetti.h" Esercizio 4 Soluzione void vendi(int i, int dim, Articolo listino[], float* capitale); Lab09 41

File vendite.c #include "vendite.h" Esercizio 4 Soluzione void vendi(int i, int dim, Articolo listino[], float* capitale){ if (i>=0 && i<dim){ *capitale = (*capitale) + (listino[i].prezzo - listino[i].costo); Lab09 42