Numero esercizio |
Descrizione |
stampa l'indirizzo di una variabile intera e di una double in esadecimale | |
esercizio inerente ai puntatori a double | |
calcola la media dei voti con l'utilizzo di vettori | |
implementa una rubrica creando un vettore di puntatori a stringhe | |
ESERCIZIO 5 | Calcola la distanza tra due punti consecutivi |
// Gli indirizzi di memoria vengono rappresentati attraverso una codifica del tipo 0x(numero esadecimale).
// Il numero esadecimale visualizzato, dipende dal compilato e dalla memoria della macchina
#include <iostream.h> void main () { |
||
|
||
} | ||
#include <iostream.h> void main () { |
||
|
||
} | ||
Le funzioni possono passare argomenti: per valore, per indirizzo, per riferimento. Il primo di essi inizializza la variabile locale alla funzione chiamata, con il valore della variabile della funzione chiamante; si tratta in definitiva di una copia. Un array potrebbe anche essere molto grande, in termini di memoria occupata, e farne una copia ogni volta che una funzione viene chiamata potrebbe essere un'operazione del tutto inefficiente. Per questo motivo, il C++ consente per il passaggio di array un solo metodo: per indirizzo. La sintassi è molto semplice, in quanto rispecchia quella del passaggio per valore delle variabili.
Il programma contiene esempi di passaggio per indirizzo di vettori e l'istruzione per creare un vettore dinamicamente:
double *array; array= new double[n]; |
||
In questo modo si dichiara un puntatore ad un tipo double e successivamente si riserva lo spazio per un vettore di "n" elemanti.
Il resto del programma è banale.
#include double *crea_vettore(int nelem) {
}
double media_vettore(double *array, int nelem) {
}
void stampa_vettore(double *array, int n, int ncolonne) {
}
void input_vettore(double *array, int n) {
}
void main () {
} |
||
Trattare stringhe nella stesso modo come si tratta per esempio un vettore di interi non è possibile. Infatti la stringa è di per sé un vettore. Ecco per generare un vettore di stringhe è necessario procedere all'allocazione di un vettore di puntatori a stringa, e successivamente per ciascun puntatore allocare la memoria sufficiente ad immagazzinare la stringa.
#include <iostream.h> char **crea_vettores(int nelem) {
}
void stampa_vettores(char *array[], int n) {
}
void input_vettores(char *array[], int n) {
}
void main () {
}
|
||
Il programma legge in input una serie di punti geometrici con rispettive coordinate ed etichetta; il numero di punti non è noto a priori nemmeno la lunghezza delle etichette. In output è fornita la distanza tra un punto ed il suo successivo (o precedente).
Realizzato da noi, è costituito da una struttura dati ad allocazione dinamica (pila) attraverso strutture e puntatori a strutture.
#include <iostream.h> struct punto
}; punto *elem=0; void crea_list(double x, double y, char
*buffer)
}
} |
||