vuoi
o PayPal
tutte le volte che vuoi
Soluzioni seconda prova in itinere febbraio 2016
Esercizio 1
Un array di interi, con un numero pari di elementi, si dice a somma costante se sommando a coppie gli
elementi in posizione simmetrica rispetto al centro dell’array (cioè il primo con l’ultimo, il secondo con il
penultimo, e così via) si ottiene sempre lo stesso risultato.
Domanda 1 n,
Scrivere una porzione di codice che chieda all’utente di inserire da tastiera un intero pari, maggiore di zero
e minore di 100 (si controlli che n rispetti queste condizioni e, in caso contrario, si re-iteri la richiesta di
n,
inserire fino all’inserimento di un valore ammissibile):
Soluzione
int n;
do {
scanf("%d",&n);
} while (n<=0 || n>100 || n%2 == 1);
Domanda 2 a ninteri,
Scrivere una porzione di codice che chieda all’utente di inserire da tastiera un array di verifichi se
l’array inserito è a somma costante e stampi a video un messaggio per informare l’utente sull’esito della
verifica:
Soluzione
int i,n,somma,cost=1,a[100];
for (i=0; i<n; i++) {
scanf("%d",&a[i]);
somma = a[0]+a[n-1];
for (i=1; i<n/2; i++) {
if (a[i]+a[n-i-1] != somma) {
cost = 0;
break;
} }}
if (cost==1)
printf("Array a somma costante\n");
else
printf("Array non a somma costante\n");
return 0;
Esercizio 2
Un operatore telefonico è caratterizzato da un nome, il paese in cui opera e le informazioni riguardanti i
piani tariffari che offre (un operatore offre al massimo 20 piani differenti). Ogni piano tariffario, a sua volta,
è caratterizzato da un nome, il costo mensile del piano, il numero diminuti mensili inclusi nel piano e il
numero di GB di traffico dati mensili inclusi nel piano.
Si ipotizzi quindi di avere i seguenti tipi di strutture dati:
typedef struct {
char nome[50];
float canone;
int minuti;
int dati;
} piano;
typedef struct {
char nome[50];
char paese[50];
int npiani;
piano piani[20];
} operatore;
Domanda 1 db sel,
Si dichiarino due variabili, e in grado di contenere i dati di 100 operatori telefonici ciascuna;
db.
(Non è necessario scrivere il frammento di codice necessario a caricare i dati nella variabile Non è
necessario scrivere un programma completo ne includere le librerie utilizzate, ma è necessario includere nei
frammenti di codice le dichiarazioni di tutte le variabili utilizzate. )
Soluzione
operatore db[100], sel[100];
Domanda 2 db
Scrivere un frammento di codice in C che, ipotizzando che la variabile sia stata precedentemente
sel
riempita con i dati di 100 operatori, copi nella variabile (senza lasciare spazi) i dati degli operatori che
hanno almeno 3 piani tariffari con più di 2 GB di traffico dati inclusi;
Soluzione
int i,j,k,n;
k = 0;
for (i=0; i<100; i++) {
n=0;
for (j=0; j<db[i].npiani; j++) {
if (db[i].piani[j].dati > 2) {
n++;
} }
if (n>=3) {
sel[k] = db[i];
k++;
}
}
Domanda 3
Scrivere un frammento di codice C che stampi a video la percentuale degli operatori contenuti insel che
operano in Italia.
Soluzione
n=0;
for (i=0; i<k; i++) {
if (strcmp(sel[i].paese,"Italia")==0) {
n++;
}}
printf("La percentuale degli operatori italiani è: %f\n",(n*100.0)/k);
Esercizio 3
Virgola fissa:
Si determini la codifica del valore 48.15 in virgola fissa:
Soluzione