I DATI
I PRINCIPALI TIPI DI DATO
UTILIZZATI IN PROGRAMMAZIONE
Con particolare riferimenti al linguaggio
C++
FINE
Indice
• Cosa sono i dati
• I tipi di dato
• Dati semplici
–
–
–
–
Interi
Reali
Caratteri
Booleani
• Dati strutturati
– Array
– Matrice
– Record
• Tabella
• Soluzioni degli esercizi
• Le stringhe
Dati principali
2
COSA SONO I DATI?
PROGRAMMA = DATI + ISTRUZIONI
I dati sono gli oggetti su cui vengono eseguite le istruzioni.
INPUT
(dati)
OUTPUT
PROCESSO
(istruzioni)
(dati)
Nel processo possono essere
utilizzati altre variabili di
lavoro come
totalizzatori,contatori,...
Tutti i linguaggi di programmazione prevedono un insieme di
dati predefiniti
che l’utente può utilizzare nella realizzazione dei propri programmi.
Dati principali
3
I TIPI DI DATO
DATI
Semplici
o
predefiniti
Dati principali
Strutturati
o
composti
4
Dati semplici
Numerici
intero
short int int
Alfanumerici
reale
long
float
carattere booleani
char
bool
In C++
Dati principali
5
Particolarità degli interi
• Gli interi in C++ si definiscono int
il loro intervallo di definizione (ossia il valore minimo e
il valore massimo che può assumere una variabile di tipo
int) dipende dal numero di byte che occupano in memoria
e questo dipende dal particolare linguaggio di
programmazione
• E’ possibile definire dati di tipo intero più grandi (long in
C++) con ampiezza di 4 byte
•
Sia ai dati int che ai long può essere applicato il modificatore unsigned che permette di
definire valori solo positivi, raddoppiando l’ampiezza del dato.
Dati principali
6
Riepilogo dei dati di tipo intero
Tipo
short int
Numero Valore minimo Valore massimo
di byte
2 byte
-32.768
+32.767
long int
4 byte
int
2 byte
unsigned int
2 byte
0
...+65.535
unsigned long
4 byte
0
+ 4.294.967.295
Dati principali
-2.147.483.648 +2.147.483.647
Coincide con short nella
rappresentazione in 2 byte e
con long in quella a 4 byte
7
Particolarità dei reali
I tipi decimali del C++ sono:
• float occupa 32 bits (4 byte) e rappresenta valori positivi e
negativi con 7 cifre significative.
• double occupa 64 bits (8 byte) e rappresenta valori positivi e
negativi con 15 cifre significative.
Dati principali
8
Riepilogo dei dati di tipo reale
TIPO
DIM.
VALORI
float
double
4 bytes da ±1.2E-38 a ±3.4E38
8 bytes da ±2.2E-308 a ±1.8E308
ESERCIZIO : LETTURA E SCRITTURA DI NUMERI
Codifica un programma in cui definisci diversi tipi di variabili numeriche; acquisisci le
variabili in input e le riscrivi in output
Dati principali
soluzione
9
Particolarità dei caratteri
• I dati definiti char possono contenere un solo carattere
• Un char occupa 1 byte.
• Una costante carattere va racchiusa tra apice singolo;
es: char c;
c=‘A’;
// alla variabile c viene assegnata la lettera A.
• In C++ i dati di tipo carattere sono assimilati a interi (ne viene
considerata la codifica interna in codice ASCII).
Es: char c;
c=‘a’;
// assegna alla variabile c il valore numerico 97
c=‘A’;
Dati principali
// assegna alla variabile c il valore numerico 65
10
Particolarità dei booleani
• I dati definiti bool possono assumere valore
true (vero) oppure false (falso)
• Un bool occupa 1 byte.
Esempio :
bool piove;
piove = true;
piove = false;
//definizione variabile booleana
//assegnazione valore VERO
//assegnazione valore FALSO
Si osservi che
• il valore true corrisponde a 1
• il valore false corrisponde a 0
Dati principali
11
ATTENZIONE
• Nel linguaggio C++ esistono altri tipi di dato predefiniti; in questi
appunti sono stati presi in considerazione solo i dati più
frequentemente usati nelle esercitazioni;
• il C++ consente al programmatore la definizione di tipi utente
attraverso il comando typedef;
• le dimensioni dei dati possono differire a seconda del compilatore e
dell’elaboratore utilizzato;
E’ possibile conoscere il numero di byte di memoria occupati da qualsiasi tipo di
variabile mediante la funzione del linguaggio sizeof( ). Esempio:
cout<<“\nDimensione di una variabile double “<<sizeof(double);
ESERCIZIO : OCCUPAZIONE DI MEMORIA
Codifica un programma in cui verifichi l’occupazione in byte dei diversi tipi di variabili
utilizzando l’istruzione sizeof
Dati principali
soluzione
12
Un particolare tipo di dato: le stringhe
Una stringa è una sequenza finita di caratteri
Esempio : il nome di una persona, il codice fiscale, la targa di un’automobile
Es: char nome [11] è una stringa che consente di memorizzare
parole formate al massimo da 10 caratteri (l’undicesimo carattere è
riservato a ‘\0’ inserito dal sistema come terminatore di stringa)
IMPORTANTE :
In C++ la stringa è chiusa da un carattere di
controllo (‘\0’) che determina la fine della stringa.
Posizione 
0
1
2
3
4
carattere 
A
L
D
O
\0
Dati principali
5
6
7
8
9
10
13
Le stringhe definite con il tipo string
Potremmo utilizzare la typedef (per la definizione di un nuovo tipo
di dato):
typedef char stringa[11];
stringa nome;
// nuovo tipo vettore di caratteri chiamato stringa
// variabile nome di tipo stringa
Nelle versioni più recenti di C++ , includendo la libreria <string>
si può definire una variabile di tipo string
#include <string>
….
string nome;
cin>>nome
cout<<“ciao signor “<<nome<<endl;
..
//input di una stringa
//output di una stringa
ESERCIZIO : SALUTO
Codifica un programma che mette a video un messaggio di saluto indirizzato ad una
persona il cui nome è chiesto in input; il nome deve essere definito di tipo string
Dati principali
soluzione
14
Anomalie nell’input di stringhe
Però c’è da notare che l’input con le stringhe presenta due inconvenienti:
1) non è possibile fare alcun controllo sulle dimensioni della stringa;
2) se nella stringa è presente uno spazio l’acquisizione si interrompe.
Esempio: char nome[11];
cin>>nome
se l’utente digita “maria pia” il programma acquisisce
solo “maria”
l’utente può digitare “mariangelamaria” (più di 11
caratteri) e il programma li acquisisce
cout<<“\nil nome è : “<<nome<<endl;
Esempio: string cognome;
cin>>cognome
se l’utente digita “de carolis” il programma acquisisce
solo “de”
cout<<“\nil cognome è : “<<cognome<<endl;
PROVA A CODIFICARE QUESTI DUE ESEMPI PER VERFIFICARE TALI ANOMALIE
Dati principali
15
Soluzione delle anomalie nell’input di stringhe
Adottando l’uso della libreria
<string>
e definendo una variabile di tipo
string
si può utilizzare la seguente
istruzione per l’input
#include <string>
..
string nome;
getline(cin,nome,'\n');
Questa istruzione consente di acquisire anche le stringhe che
presentano spazi al loro interno
ESERCIZIO : PROVA GETLINE
Codifica un programma in cui definisci una stringa di tipo string , la acquisisci con
getline e la mostri in output; nel test scrivi “carlo alberto”
Dati principali
soluzione
16
Altre anomalie nell’input di stringhe
C’è da notare che quando si termina l’input e si preme il pulsante
“invio”, tale pulsante invia un carattere di terminazione dell’input
che rimane in memoria e che potrebbe essere male interpretato
nei casi in cui si debbano acquisire ulteriori caratteri
int main( )
{
string nome;
int altezza;
cout<<"\nindica l'altezza"<<endl;
cin>>altezza;
cout<<"\nl'altezza è -->"<<altezza<<endl;
cout<<"\nindica un nome"<<endl;
getline(cin,nome,'\n');
cout<<"\nil nome è -->"<<nome<<endl;
system("PAUSE");
return EXIT_SUCCESS;
Se provi ad eseguire questo
programma, cosa accade?
Non ti è permesso digitare il
nome!!!
PERCHE’?
}
Dati principali
17
Il buffer dell’input
Si tratta di un’area di memoria RAM in cui vengono
memorizzati i dati in input.
Esempio:
- da tastiera vengono digitati i seguenti caratteri : abcdefg
- poi viene dato un “invio” ,
- il programma in esecuzione acquisisce la stringa ,
- mette il terminatore \0 e poi il carattere \n per la fine dell’input
Perciò nel buffer troviamo:
a b c d e\0
\n
Alcune istruzione per l’input non “puliscono” il buffer, cioè non eliminano il
carattere ‘\n’, e l’istruzione cin è una di queste
E allora come si deve fare se in un programma si devono acquisire numeri
(utilizzando l’istruzione cin) e poi stringhe (utilizzando l’istruzione getline)
senza incorrere in questi inconvenienti?
Dati principali
18
Pulizia del buffer dell’input
Per eliminare ulteriori caratteri immessi si utilizza la funzione
cin.ignore (1);
che consente di eliminare un carattere in eccedenza
int main( )
{
string nome;
int altezza;
cout<<"\nindica l'altezza"<<endl;
cin>>altezza;
cin.ignore(1);
cout<<"\nl'altezza è -->"<<altezza<<endl;
cout<<"\nindica un nome"<<endl;
getline(cin,nome,'\n');
cout<<"\nil nome è -->"<<nome<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Dati principali
19
Dati strutturati
In molti problemi si ha la necessità di aggregare molti dati di tipo
semplice (int, float, char, ecc.) perché
sono logicamente correlati
Esempio:
•il prezzo di 100 articoli di magazzino,
•I tempi di una classifica di una competizione
•Un elenco di persone
Ma non è conveniente definire singolarmente ciascuna variabile,
sia perché potrebbero essere in numero molto elevato, sia perché
tutte le variabile fanno capo logicamente ad un’unica struttura
Dati principali
20
Struttura di dati
Si parla di struttura di dati quando si raggruppano
più oggetti dello stesso tipo o di tipo diverso ,
assegnando un nome unico alla struttura.
Tipi di dati strutturati
Array
Record
monodimensionale
bidimensionale
(vettore)
(matrice)
Dati principali
21
Esempio 1: il mese
Si consideri una struttura composta da 12 elementi
di tipo intero chiamata “giorni” nella quale vengono
memorizzati il numero di giorni di cui è composto
ciascun mese; è possibile conoscere i giorni di
aprile facendo riferimento al 4° elemento della
struttura.
giorni
1° 2° 3° 4° 5° 6° 7° 8° 9° 10° 11° 12°
31 28 31 30 31 30 31 31 30 31 30 31
Dati principali
22
array monodimensionale - vettore
La struttura giorni è un array monodimensionale o vettore e in
C++ viene definito:
int
giorni [12] ;
Tipo base
dimensione del vettore
Nome del vettore
valore di ciascuna
componente
indice di posizione
i
0
1
2
3
4
5
6
7
8
9
10
11
31 28 31 30 31 30 31 31 30 31 30 31
Dati principali
23
Caratteristiche di un vettore
int giorni[12];
• l’elaborazione del vettore avviene elemento per elemento;
• l’individuazione del singolo elemento è possibile attraverso
l’uso di una variabile intera denominata“indice”;
• la posizione occupata dal primo elemento in C++ è zero;
• l’indice i varia quindi da 0 a 11 (da zero ad ampiezza del
vettore diminuita di uno).
i
0 1
2
3
4 5 6
7
8 9 10 11
31 28 31 30 31 30 31 31 30 31 30 31
Dati principali
24
Elaborazione di array monodimensionale
L’acquisizione e la visualizzazione del vettore giorni prevede
l’elaborazione di tutti i suoi elementi uno alla volta.
Il ciclo for (iterazione enumerativa) è, in questi casi, la più
adatta:
int giorni[12];
int i;
for (i = 0; i<12; i++)
cin>>giorni[i];
for (i = 0; i<12; i++)
cout<<giorni[i];
// dichiarazione del vettore
// dichiarazione dell’indice
// ciclo di acquisizione
// ciclo di visualizzazione
ESERCIZIO : ELEBORAZIONE VETTORE DI NUMERI
Codifica un programma in cui definisci un vettore di 10 numeri , lo acquisisci e lo
mostri in output, utilizzando un ciclo enumerativo
Dati principali
soluzione
25
Esempio 2 : temperature
Si memorizzano le temperature rilevate per una settimana, ad un’ora
stabilita, in tre città italiane (Milano, Roma, Palermo). Si ottiene una
tabella formata da 3 righe (le città) e 7 colonne (i giorni). A tale tabella
si assegna il nome “temperature” e per riferirsi alla temperatura
rilevata a Roma di venerdì, bisognerà considerare il valore contenuto
nella 2a riga, 5a colonna.
temperature
giorni ->
Milano 1°
Roma
2°
Palermo 3°
Dati principali
1°
2°
12
15
17
11
15
18
3°
13
13
15
4°
16
18
20
5°
15
16
16
6°
10
12
12
7°
14
17
20
26
Array bidimensionale - matrice
La tabella “temperature” è un array bidimensionale o matrice e
in C++ viene definito:
int temperature[3][7];
// 3 righe 7 colonne
• l’elaborazione della matrice avviene elemento per elemento;
• l’individuazione del singolo elemento è possibile attraverso
di due variabili indice (uno di riga e uno di colonna);
l’uso
• la posizione occupata dal primo elemento in C++ è [0][0];
• l’indice i (di riga) varia quindi da 0 a 2 , l’indice j (di colonna) varia
da 0 a 6.
• Se il numero di righe è uguale al numero di colonne si ha una
matrice quadrata.
Dati principali
27
Le stringhe come vettori di caratteri
Una stringa così definita
è un vettore di caratteri
char nome [11]
ma ricordiamo che consente di memorizzare parole formate al
massimo da 10 caratteri (l’undicesimo carattere è riservato a ‘\0’
inserito dal sistema come terminatore di stringa)
Posizione 
0
carattere 
M A R I
Dati principali
1
2
3
4
5
6
O L I
7
8
9
10
N A \0
28
Input e output di stringhe
Pur essendo vettori monodimensionali, l’input e l’output delle
stringhe non ha bisogno di elaborare ogni singolo carattere
output:
cout<<nome;
// visualizzazione di una stringa
input:
cin>> nome;
// lettura di una stringa
?
Comunque la stringa può essere trattata come vettore di caratteri
nei casi in cui è necessario controllare il singolo carattere
Esempio: indicare la lettera iniziale di un nome
Risultato dell’esecuzione
char nome[11];
digita un nome: paola
……………
cout<<"\ndigita un nome : ";
Il nome inizia con la lettera  p
cin>>nome;
char iniziale=' ' ;
cout<<"\nil nome inizia con la lettera --> "<<nome[0]<<endl;
Dati principali
29
I record
Si definisce record quel dato che, pur rappresentando un unico oggetto
di elaborazione, è formato da più elementi (campi) , anche di diverso
tipo.
Esempio:
uno studente può essere caratterizzato
dall’insieme dei dati:
cognome, nome, classe, anno di nascita...
Studente1{Marcoldi, Antonio, 3A, 1995}
Studente2{Angelini, Paolo, 5A, 1993}
Dati principali
30
Definizione dei record
Un record è costruito in base ad un tracciato record ben definito.
Il tracciato record è l’elenco del campi che formano il record
struct stud
definizone di un nuovo tipo di variabile
{
record stud
string cognome;
string nome;
definizione dei campi del record
int annoNascita;
};
presenza obbligatoria del ‘;’
La definzione della struct definisce solo il tracciato record, ma non
contiene dati. Occorre definire una variabile di tipo stud
stud studente;
definizione di una variabile del tipo record “stud”
Il programma elabora i singoli campi della variabile studente
Dati principali
31
Trattamento dei campi di un record
Dato un record stud
e una variabile studente di tipo
stud
L’input e l’output dei record
avviene un campo alla volta
struct stud
{
string cognome;
string nome;
int annoNascita;
};
stud studente;
Esempio:
La visualizzazione del
cout<<“\ncognome = “<<studente.cognome;
record prevede l’output dei
cout<<“\nnome = “<<studente.nome;
singoli campi
cout<<“\nanno di nascita = “<<studente.annoNascita;
ESERCIZIO:RECORD LIBRO
Codifica un programma in cui definisci un tipo record con tracciato : titolo del libro,
costo, numero di pagine; acquisisci poi due libri e comunica tutti i dati di quello che
costa di più
Dati principali
soluzione
32
Tabelle - vettori di record
In particolare parliamo di vettori di record di solito detti tabella
perché formati da tante colonne quanti sono i campi del record e da
tante righe quanti sono gli elementi dell’array
Facendo sempre riferimento al
record stud, vogliamo definire
20 studenti di una stessa classe.
Perciò scriveremo
Tipo base
Dati principali
struct stud
{
string cognome;
string nome;
int annoNascita;
};
stud classe [20];
Nome della tabella
dimensione
della tabella
33
Esempio di una tabella
Come nei vettori le righe sono
individuate da un indice di
posizione (che parte da 0) mentre
ogni riga essendo un record, avrà
tutti i campi della struttura
indice
cognome
nome
annoNascita
0
1
2
3
4
6° record
5
6
Campo nome del 7° record
7
8
9
Dati principali
34
Elaborazione di una tabella
Nell’elaborazione di una tabella si usano le tecniche già viste per i
vettori e per i record.
• In quanto vettore, l’elaborazione di ciascuna riga della tabella
avviene una alla volta.
• Poiché ogni riga è un record, ogni campo deve essere elaborato
singolarmente
• Il ciclo for (iterazione enumerativa) è, in questi casi, il più adatto
Dati principali
35
Elaborazione di una tabella
Acquisizione e visualizzazione della tabella classe
int i;
// dichiarazione dell’indice
for (i = 0; i<20; i++)
// ciclo di acquisizione
{getline(cin,classe[i].cognome,’\n’);
getline(cin,classe[i].nome,’\n’);
cin>>classe[i].annoNascita; cin.ignore(1);
}
for (i = 0; i<20; i++)
// ciclo di visualizzazione
{cout<<classe[i].cognome<<endl;
cout<<classe[i].nome<<endl;
cout<<classe[i]. annoNascita <<endl;
}
struct stud
{
string cognome;
string nome;
int annoNascita;
};
stud classe [20];
ESERCIZIO: TABELLA BIBLIOTECA
Definisci un tipo record con tracciato : titolo del libro, costo, numero di pagine;
definisci poi una tabella di 10 libri; acquisisci i libri della tabella e comunica poi tutti i
dati ; calcola il prezzo medio dei libri
Dati principali
soluzione
36
Soluzione esercizi
•
•
•
•
•
•
•
Lettura e scrittura di numeri
Occupazione di memoria
Saluto
Prova Getline
Elaborazione vettore di numeri
Record libro
Tabella biblioteca
Dati principali
37
Esercizio : lettura e scrittura di numeri
#include <cstdlib>
#include <iostream>
using namespace std;
Codifica un programma in cui definisci diversi tipi di variabili
numeriche; acquisisci le variabili in input e le riscrivi in output
int main()
{ int intero;
long interoGrande;
float decimale;
double decimaleGrande;
cout<<"\nindica un intero"<<endl;
cout<<"\nl'intero indicato vale : "<<intero<<endl;
cin>>intero;
cout<<"\nindica un intero grande"<<endl;
cin>>interoGrande;
cout<<"\nl'intero grande indicato vale : "<<interoGrande<<endl;
cout<<"\nindica un decimale"<<endl;
cout<<"\nil decimale indicato vale : "<<decimale<<endl;
cin>>decimale;
cout<<"\nindica un decimale grande"<<endl;
cin>>decimaleGrande;
cout<<"\nil decimale grande indicato vale : "<<decimaleGrande<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Dati principali
Teoria
Elenco esercizi
38
Esercizio : occupazione di memoria
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int main()
{
Codifica un programma in cui verifichi l’occupazione in byte dei
diversi tipi di variabili utilizzando l’istruzione sizeof
cout<<"\nDimensione di una variabile int
:"<<sizeof(int)<<endl;
cout<<"\nDimensione di una variabile short int :"<<sizeof(short int)<<endl;
cout<<"\nDimensione di una variabile long int :"<<sizeof(long int)<<endl;
cout<<"\nDimensione di una variabile float
:"<<sizeof(float)<<endl;
cout<<"\nDimensione di una variabile double :"<<sizeof(double)<<endl;
cout<<"\nDimensione di una variabile char
:"<<sizeof(char)<<endl;
cout<<"\nDimensione di una variabile bool
:"<<sizeof(bool)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Teoria
Dati principali
Elenco esercizi
39
Esercizio : saluto
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
Codifica un programma che mette a video un messaggio di saluto
indirizzato ad una persona il cui nome è chiesto in input; il nome
deve essere definito di tipo string
int main()
{
string nome;
cout<<"\ncome ti chiami?"<<endl;
cin>>nome;
cout<<"\nCaio "<<nome<<", io sono il computer !"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Teoria
Dati principali
Elenco esercizi
40
Esercizio : prova getline
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
Codifica un programma in cui definisci una stringa di tipo
string , la acquisisci con getline e la mostri in output;
nel test scrivi “carlo alberto”
int main()
{
string nome;
cout<<"\nindica un nome"<<endl;
getline(cin,nome,'\n');
cout<<"\nil nome è -->"<<nome<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Teoria
Dati principali
Elenco esercizi
41
Esercizio : elaborazione vettore di numeri
Codifica un programma in cui definisci un vettore di 10 numeri ,
#include <cstdlib>
lo acquisisci e lo mostri in output, utilizzando un ciclo
#include <iostream>
enumerativo
#include <string>
using namespace std;
int main()
{
int v[10];
int i=0;
cout<<"\nACQUISIZIONE DI DATI DEL VETTORE "<<endl;
for(i=0;i<10;i++)
{cout<<"\nindica il numero in posizione "<<i+1<<" : ";
cin>>v[i];
}
cout<<"\nVISUALIZZAZIONE DEI DATI DEL VETTORE "<<endl;
for(i=0;i<10;i++)
{cout<<"\nil numero in posizione "<<i+1<<" e' "<<v[i]<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
Teoria
Elenco esercizi
}
Dati principali
42
Esercizio : record libro
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
struct libro
{ string titolo;
float prezzo;
int numeroPagine;
};
Codifica un programma in cui definisci un tipo record con
tracciato : titolo del libro, costo, numero di pagine; acquisisci
poi due libri e comunica tutti i dati di quello che costa di più
int main()
{
libro L1, L2;
cout<<"\nindica i dati del primo libro:"<<endl;
cout<<"\ntitolo : "; cin>>L1.titolo;
cout<<"\nprezzo : "; cin>>L1.prezzo;
cout<<"\npagine : "; cin>>L1.numeroPagine;
cout<<"\nindica i dati del secondo libro:"<<endl;
cout<<"\ntitolo : "; cin>>L2.titolo;
cout<<"\nprezzo : "; cin>>L2.prezzo;
cout<<"\npagine : "; cin>>L2.numeroPagine;
if(L1.prezzo>L2.prezzo)
{ cout<<"\nIl libro piu' costo e' "<<L1.titolo;
cout<<" con prezzo "<<L1.prezzo;
cout<<" e pagine "<<L1.numeroPagine<<endl;
}
else
{ cout<<"\nIl libro piu' costo e' "<<L2.titolo;
cout<<" con prezzo "<<L2.prezzo;
cout<<" e pagine "<<L2.numeroPagine<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Teoria
Dati principali
Elenco esercizi
43
#include <cstdlib>
#include <iostream>
#include <string>
#define dim 10
using namespace std;
struct libro
{ string titolo;
float prezzo;
int numeroPagine;
};
Esercizio : tabella biblioteca
Definisci un tipo record con tracciato : titolo del libro, costo, numero di
pagine; definisci poi una tabella di 10 libri; acquisisci i libri della tabella e
comunica poi tutti i dati ; calcola il prezzo medio dei libri
cout<<"\nVISUALIZZAZIONE DEI LIBRI";
for(i=0;i<dim;i++)
{ cout<<"\ntitolo : "<<biblioteca[i].titolo;
cout<<" prezzo : "<<biblioteca[i].prezzo;
cout<<" pagine : "<<biblioteca[i].numeroPagine<<endl;
}
for(i=0;i<dim;i++)
{ s=s+biblioteca[i].prezzo;
}
m=s/dim;
cout<<"\nla media dei prezzi e' : "<<m<<endl;
int main()
{ libro biblioteca[dim];
int i=0; float s=0, m=0;
system("cls");
cout<<"\nACQUISIZIONE DEI LIBRI";
for(i=0;i<dim;i++)
{ cout<<"\ntitolo : ";
cin>>biblioteca[i].titolo;
system("PAUSE");
cout<<"\nprezzo : ";
return EXIT_SUCCESS;
cin>>biblioteca[i].prezzo;
}//fine
cout<<"\npagine : ";
cin>>biblioteca[i].numeroPagine;
Teoria
}
Dati principali
Elenco esercizi
44
FINE
Dati principali
45
FINE
Scarica

DATI+PRINCIPALI - IIS Cartesio Luxemburg