• Non ci sono risultati.

telefoniassumendo che le possibili operazioni siano le seguenti:

N/A
N/A
Protected

Academic year: 2021

Condividi "telefoniassumendo che le possibili operazioni siano le seguenti:"

Copied!
1
0
0

Testo completo

(1)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

ESAME DI FONDAMENTI DI INFORMATICA - SIMONCINI – 13/02/2006 - C++

1. Una sistema di ricariche di telefoni cellulari può essere rappresentato mediante un’array a valori interi di N posizioni. Ciascun elemento dell’array rappresenta l’ammontare de credito disponibile sul telefono cellulare di uno degli N clienti della società di telefonia (identificati con numeri progressivi da 0 a N-1). Si definisca una classe telefoni

assumendo che le possibili operazioni siano le seguenti:

 telefoni(): inizializzazione con tutti i depositi a zero;

 bool consumo(int i, int c): effettua una riduzione del credito dell’i-esimo cliente per un importo pari a c. Se l’ammontare del credito è minore dell’importo del consumo, viene restituito false, altrimenti viene restituito il valore true.

 ricarica(int i, int d): registra l’incremento del credito del cliente i-esimo di una cifra di denaro pari a d.

 int crediti_esauriti(): restituisce il numero dei clienti con un credito minore o uguale a zero.

2. Siano dati due file chiamati numeri1.dat e numeri2.dat contenenti ciascuno un elenco di numeri interi positivi diversi fra loro. Si scriva una funzione booleana comuni() che crea un nuovo file numeri_com.dat che contiene i soli numeri che compaiono sia in numeri1.dat che in numeri2.dat. Se esiste almeno un numero in comune fra i due file, la funzione restituisce true, altrimenti, se non esistono numeri in comune, il file numeri_com.dat risulterà vuoto e la funzione restituisce false.

3. Data una lista semplice a valori interi l ordinata in senso crescente, scrivere una funzione elimina(l, n) che riceve in ingresso la lista l e in intero n e dealloca tutti gli elementi di l che hanno il campo informativo maggiore di n.

4. Dati i numeri decimali A=201, B=65 e C=-64, si determini il minimo numero di bit necessari per rappresentare contemporaneamente i suddetti numeri in complemento a 2 e se ne dia la rappresentazione.

Utilizzando poi lo stesso numero di bit, si esegua l'operazione D=A-C e si discuta se il risultato ottenuto è o no significativo.

Punteggio:

Es.1 Es.2 Es.3 Es.4

10 10 10 3

Risultati e Soluzione del compito:http://www.iei.pi.cnr.it/~glami/elenco-compiti.htm

(2)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

Es. 1 // telefoni.h const int N=100;

class telefoni { int TC[N];

public:

telefoni() ;

bool consumo (int i, int c) ; void ricarica (int i, int d);

int crediti_esauriti();

}

// telefoni.cc

#include “telefoni.h”

#include <iostream.h>

telefoni::telefoni()

{ for (int i=0; i<N; i++) TC[i]=0;

}

boolean telefoni::consumo (int i, int c) { TC[i]-=c;

if (TC[i]<0) {

cout<<”Il credito è esaurito\n”;

return false; } return true;

}

void telefoni::ricarica (int i, int d) { TC[i]+=d; }

int telefoni:: crediti_esauriti( ) { int cont=0;

for (int i=0; i<N; i++)

if(TC[i]<=0) cont++;

return cont; }

Es. 2

#include <fstream.h>

bool comuni() { fstream f1, f2, g;

f1.open(“numeri1.dat”, ios::in);

g.open(“numeri_com.dat”, ios::out);

int n1, n2;

bool trovato=false ; while(f1>>n1) {

f2.open(“numeri2.dat”, ios::in);

while(f2>>n2) {

if(n1==n2) { g<<n1<<”\n”

trovato=true;

break; } }

f2.close();

(3)

U N I V E R S I T À D E G L I S T U D I D I P I S A F A C O L T À D I I N G E G N E R I A

CORSO di LAUREA in INGEGNERIA ELETTRONICA

}

f1.close();

g.close();

return trovato;

} Es. 3

void elimina(elem*& l, int n) { elem *aux, *aux1;

if(l==0) return;

if(l->info > n) { aux=l;

while(aux!=0) { l=l->next ; delete aux;

aux=l;

} } else {

aux=l->next ; aux1=l ;

for( ; aux->info<=n ; aux=aux->next) aux1=aux ;

while(aux !=0) {

aux1->next=aux->next ; delete aux ;

aux=aux1->next ; }

} }

Riferimenti

Documenti correlati

All’atto della sottoscrizione del contratto in Filiale riceverai il Codice Titolare (lo trovi sulla tua copia del contratto “Servizi via internet, cellulare e telefono”) e

se troverai accanto alla scritta un numero che indica il numero delle operazioni che necessitano di approvazione in questo caso sono tutte le richieste di ricarica dove

Cosa mettere: Assorbenti, calze in nylon, canne per innaffiare, carta autocopiante, carta chimica o oleata o sporca, carta da forno, carta per alimenti, CD e DVD, cenere

SERVIZIO 14 Russo Giuseppina ISTRUTTORE DIRETTIVO [email protected] 0917070917 SERVIZIO 14 Sabatino Biagio FUNZIONARIO DIRETTIVO

Inoltre, nell’app AirKey viene conservata la panoramica delle autorizzazioni di accesso e viene controllato lo stato della batteria del cilindro AirKey.. Il telefono cellulare

TRICLORURO-DI-FERRO(7705-08-0) SE TROVATO NELLA SEGUENTI LISTE DI REGOLAMENTI Accordo europeo che regola il trasporto di merci pericolose su strada (ADR 2019, Francese) Accordo

i dati personali diversi da quelli sensibili e giudiziari potranno essere comunicati esclusivamente a soggetti pubblici se previsto da disposizioni di legge o regolamento, in

✓ n.. 1 Barrare l’opzione che interessa. 1 Barrare l’opzione che interessa. 1 Convenzione tra Ministero dell’Università e Consiglio Nazionale dei dottori