}; struct super{ int id_magazzino; string denominazione; string indirizzo; string citta; int superficie; struct prodotto Prodotti[MAX_PRODOTTI];

Documenti analoghi
Laboratorio di Informatica

Laboratorio di Informatica

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

N algoritmo Traccia in breve 1 (Click)

Fondamenti di Informatica

Aggiornamento : 21/11/2010 semplificate le funzioni per il calcolo delle medie.

Prova Scritta del 20/09/10

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };

Algoritmo di ordinamento per sostituzione. Esempio : dato l array :

Tipi strutturati - struct

struct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };

4. Accesso diretto per gli archivi con record a lunghezza costante

L organizzazione dei programmi

Fondamenti di Informatica Ing. Biomedica

Classe Squadra. #include <iostream> using namespace std;

1.1 of :05:39

Gestione di files Motivazioni

Fondamenti di Informatica

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Laboratorio di Algoritmi e Strutture Dati

Fondamenti di Informatica 1 - Compito A

Prova Scritta del 20/09/10

Il C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli

Struttura di un linguaggio

Laboratorio di Algoritmi e Strutture Dati

Ho raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero

Ricerca binaria (o dicotomica) di un elemento in un vettore

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

ESERCIZI SVOLTI. # include <iostream.h> # include <stdlib.h> # define int_inf # define int_sup main() { int n1,n2,n3,n4,i,min_prec,minimo;

1: /* Nome del programma: numero_giorni_01.cpp - Data: 03/04/2010 2: Realizzato da: Gaetano Della Cerra - III Informatica Serale I.T.I.S.

Struttura di un programma C++

Gestire le situazioni di errore

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Informatica (A-K) 14. Linguaggio C -4

Fondamenti di Informatica

Corso di Fondamenti di Informatica (M-Z) Prof. Aldo Franco Dragoni. Prova Scritta 19 aprile 2007

Informatica (A-K) 23. Linguaggio C -8

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Fondamenti di Informatica 12. Linguaggio C -4

Esercitazioni Informatica Ottobre Gruppo A 10 Novembre Gruppo B. Esercizi

L AMBIENTE CODE BLOCKS E L IO

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Fondamenti di Informatica Ing. Biomedica

Indice. I costrutti decisionali I cicli

Qualsiasi programma in C++ segue lo schema:

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

24/2/2015 Pastebin.com - Printed Paste ID:

Informatica B Allievi Meccanici con cognome da Cl a L II prova intermedia del 13/02/01 Prof. Elisabetta Di Nitto

if else Fondamenti di Informatica (Modulo B) !""#$ % ( #if else ) " *+ #switch if (Condizione) Istruzione

La programmazione Object Oriented e le sue applicazioni in Fisica.

Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti

Algoritmo di ordinamento per scambio (a bolle o bubble sort)

Ricerca sequenziale di un elemento in un vettore

File: /home/peppino/area_lavori/ese enti/oggetti/timbro_classe.cpp Pagina 1 di 5

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

Laboratorio di Informatica

Programmazione modulare

Informatica I Facoltà di Ingegneria

Esempi e esercitazioni sulle matrici e strutture

Università degli Studi di Cassino Corso di Fondamenti di Informatica Visibilità e tempo di vita delle variabili

Classe: vettore di interi

N:\Lavoro\Compiti\esercizi svolti\4\info \main.c mercoledì 21 maggio :11

Gestione dinamica di una lista

Esercitazioni Informatica Novembre Gruppo A 24 Novembre Gruppo B. Esercizi

Fondamenti di Informatica Ing. Biomedica

1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/ III Informatica Serale I.T.I.S.

Informatica (A-K) 19. Linguaggio C -6

IEIM Esercitazione X Albero Genealogico & Ripasso. Alessandro A. Nacci -

C++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Gestione dinamica di una coda

Università di Roma Tor Vergata L6-1. iterazione: struttura di controllo per ripetere più volte uno stesso comando

File. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Laboratorio di Algoritmi e Strutture Dati. Pile

Per implementare l Algoritmo si devono usare 2 coppie di indici :

Fondamenti di Informatica 2

Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni

Fondamenti di Informatica II 7. Array e Strutture in C++

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

IEIM Esercitazione IX Ripasso Generale. Alessandro A. Nacci -

Programmazione ad Oggetti C++

Input/Output Input = clienti.bin, n (funzione richiesta dall utente), Cognome (per il punto 1) Output = dati_cliente, top2, sconti.

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde

Prova Scritta del 20/09/10

BREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA

L AMBIENTE CODE BLOCKS E L IO

Esercizio 1. Tavola ordinata in memoria centrale

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri.

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

/* Classe : Officina. Autore : Riontino Raffaele 4*informatici corso serale ITIS Molinari - Milano 29/05/2011

File: /home/peppino/area_lavori/ese orgenti/oggetti/ohm_classe.cpp Pagina 1 di 5

25.25 in base 2: normalizzando: mantissa e esponente rappresentaz. : mantissa e esponente

Implementazione dell albero binario in linguaggio C++

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

Variabili e Funzioni. Informatica 1 / 19

Fondamenti di Informatica

Esercitazione Matrici e Struct

Transcript:

/*Esonero del 29/04/2009 Fondamenti di Informatica II (A-M) - Politecnico di Bari prof. G. Pascoschi ESERCIZIO 1 (10 punti) Data una catena di 10 supermercati (IDmagazzino, denominazione, indirizzo, città, superficie), sono presenti in ciascun supermercato 1000 prodotti (IDprodotto, nome, reparto, prezzo, data_scadenza). Implementare in C++ le seguenti funzioni: 1) Salvataggio dei dati dei supermercati nel file binario Super.dat (con modalità accesso sequenziale) 2) Visualizzazione del prodotto piu costoso (nome e prezzo) del supermercato n.9 (senza ordinare la tabella) 3) Modifica di un record su file, noti l ID magazzino e l IDprodotto (con modalità ad accesso sequenziale) 4) Ordinamento in ordine crescente di prezzo di ciascun supermercato leggendo i dati dal file con modalità ad accesso sequenziale e scrivendo i dati sullo stesso file con modalità ad accesso diretto*/ #include <iostream> #include <string> #define MAX_PRODOTTI 1000 #define MAX_SUPERMERCATI 10 using namespace std; struct data{ int giorno; int mese; int anno; ; struct prodotto{ int id_prodotto; string nome; int reparto; double prezzo; struct data Data_scadenza; ; struct super{ int id_magazzino; string denominazione; string indirizzo; string citta; int superficie; struct prodotto Prodotti[MAX_PRODOTTI]; ; typedef struct super mercato; void menu(const char*); void salvataggio(const char*); void visualizza_costoso(const char*); void showelem(mercato); void insertelem(mercato&); void modifica(const char*); void salva_ordinato(const char*); void scambia(struct prodotto&,struct prodotto&); void show_prodotti(struct prodotto[]); void visualizza(const char*); int main(){ char url[]="c:\\super.dat"; menu(url); return 0; void menu(const char* u){ int scelta; do{ cout<<"\n\n\n\n------------------------menu PROVA------------------------------"<<endl; cout<<"scegliere l'opzione desiderata"<<endl; cout<<"premere 1 per salvare i dati dei supermercati"<<endl; cout<<"premere 2 visualizzazione prodotto piu' costoso"<<endl; cout<<"premere 3 per modificare record"<<endl; cout<<"premere 4 ordinamento supermercati"<<endl; cout<<"premere 5 visualizzazione magazzini"<<endl; 1

cout<<"premere 6 per uscire"<<endl; cin>>scelta; switch(scelta){ case 1: salvataggio(u); case 2: visualizza_costoso(u); case 3: modifica(u); case 4: salva_ordinato(u); case 5: visualizza(u); case 6: default: cout<<"si e' sbagliato a inserire un valore per la scelta"<<endl; while(scelta!=6); 2 void insertelem(mercato& m){ cout<<"inserire l'id del magazzino"<<endl; cin>>m.id_magazzino; cout<<"inserire denominazione"<<endl; cin>>m.denominazione; cout<<"inserire indirizzo"<<endl; cin>>m.indirizzo; cout<<"inserire superficie:"<<endl; cin>>m.superficie; cout<<"inserire citta:"<<endl; cin>>m.citta; cout<<"inserire l'id del prodotto"<<endl; cin>>m.prodotti[i].id_prodotto; cout<<"inserire nome"<<endl; cin>>m.prodotti[i].nome; cout<<"inserire reparto"<<endl; cin>>m.prodotti[i].reparto; cout<<"inserire prezzo:"<<endl; cin>>m.prodotti[i].prezzo; cout<<"inserire data(gg)"<<endl; cin>>m.prodotti[i].data_scadenza.giorno; cout<<"inserire data(mm)"<<endl; cin>>m.prodotti[i].data_scadenza.mese; cout<<"inserire data(aaaa)"<<endl; cin>>m.prodotti[i].data_scadenza.anno; void salvataggio(const char* u){ if((fp=fopen(u,"ab"))==null){ else{ for(int i=0;i<max_supermercati;i++){ insertelem(current);

void visualizza_costoso(const char* u){ int numero; bool flag=false; cout<<"inserire supermercato su cui effettuare ricerca"<<endl; cin>>numero; else{ if(current.id_magazzino==numero){ if(!flag){ cout<<"elemento non presente"<<endl; else{ struct prodotto Max; if(i==0){ Max=current.Prodotti[i]; else{ if(max.prezzo<current.prodotti[i].prezzo) Max=current.Prodotti[i]; cout<<"il nome prodotto piu' costoso e':\t"<<max.nome<<endl; cout<<"il prezzo del prodotto piu' costoso e':\t"<<max.prezzo<<endl; 3 void modifica(const char* u){ int index=-1; int nrec=0; int id_mag,id_pro; mercato current,temp; bool flag=false; cout<<"inserire l'id del magazzino da modificare"<<endl; cin>>id_mag; cout<<"inserire l'id del prodotto da modificare"<<endl; cin>>id_pro; else{ nrec++; if(current.id_magazzino==id_mag){ if(flag){ if(current.prodotti[i].id_prodotto==id_pro){ index=i; cout<<endl<<"prodotto DA MODIFICARE"<<endl<<endl; cout<<"id_prodotto:\t"<<current.prodotti[i].id_prodotto<<endl; cout<<"nome:\t"<<current.prodotti[i].nome<<endl; cout<<"prezzo:\t"<<current.prodotti[i].prezzo<<endl; cout<<"reparto:\t"<<current.prodotti[i].reparto<<endl;

if(index==-1){ cout<<"prodotto non presente nel magazzino"<<endl; else{ cout<<"inserire nuovo id del prodotto"<<endl; cin>>current.prodotti[index].id_prodotto; cout<<"inserire nuovo nome"<<endl; cin>>current.prodotti[index].nome; cout<<"inserire nuovo reparto"<<endl; cin>>current.prodotti[index].reparto; cout<<"inserire nuovo prezzo:"<<endl; cin>>current.prodotti[index].prezzo; cout<<"inserire nuova data(gg)"<<endl; cin>>current.prodotti[index].data_scadenza.giorno; cout<<"inserire nuova data(mm)"<<endl; cin>>current.prodotti[index].data_scadenza.mese; cout<<"inserire nuova data(aaaa)"<<endl; cin>>current.prodotti[index].data_scadenza.anno; if((fp=fopen(u,"r+b"))==null){ 4 for(int i=0;i<nrec-1;i++){ fread(&temp,sizeof(mercato),1,fp); fseek(fp, 0, SEEK_CUR); else{ cout<<"non presente magazzino"<<endl; void salva_ordinato(const char* u){ int nrec=0; long pos=0; if((fp=fopen(u,"r+b"))==null){ else{ nrec++; bool flag; do{ flag=false; for(int i=0;i<max_prodotti-1;i++){ if(current.prodotti[i].prezzo>current.prodotti[i+1].prezzo){ scambia(current.prodotti[i],current.prodotti[i+1]); while(flag); pos=(nrec-1)*sizeof(mercato); fseek(fp,pos,0); fseek(fp,ftell(fp),0); void scambia(struct prodotto& p1,struct prodotto& p2){ struct prodotto temp;

temp=p1; p1=p2; p2=temp; 5 void showelem(mercato m){ cout<<"id_magazzino:\t"<<m.id_magazzino<<endl; cout<<"denominazione:\t"<<m.denominazione<<endl; cout<<"indirizzo:\t"<<m.indirizzo<<endl; cout<<"superficie:\t"<<m.superficie<<endl; cout<<"citta:\t"<<m.citta<<endl; show_prodotti(m.prodotti); void show_prodotti(struct prodotto p[]){ cout<<endl<<"prodotto N. "<<i+1<<endl<<endl; cout<<"id_prodotto:\t"<<p[i].id_prodotto<<endl; cout<<"nome:\t"<<p[i].nome<<endl; cout<<"prezzo:\t"<<p[i].prezzo<<endl; cout<<"reparto:\t"<<p[i].reparto<<endl; void visualizza(const char* u){ else{ cout<<"------magazzino CORRENTE------------"<<endl<<endl; showelem(current);