• Non ci sono risultati.

n elimina_pos(l, n) l l giovane() elenco.txt n=n_m_esauriti() resa(char m) m T F ok=noleggia(char m) m biciclette() biciclette M N CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI

N/A
N/A
Protected

Academic year: 2021

Condividi "n elimina_pos(l, n) l l giovane() elenco.txt n=n_m_esauriti() resa(char m) m T F ok=noleggia(char m) m biciclette() biciclette M N CORSO di LAUREA in INGEGNERIA delle TELECOMUNICAZIONI"

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 – 26/09/2002 - C++

1. Un noleggio di biciclette dispone di

N

=10 modelli di bici (identificati con le prime 10 lettere dell’alfabeto) e di

M

=20 biciclette per ciascun modello. Un tale noleggio può essere rappresentato mediante un array ciascun elemento del quale è una struttura con un campo carattere che identifica il modello di bici e un campo intero che identifica la quantità di bici attualmente noleggiate. Si definisca una classe

biciclette

assumendo che le possibili operazioni siano le seguenti:

biciclette()

: inizializza un noleggio di bici con tutte le bici disponibili;

ok=noleggia(char m)

: noleggia una bici del modello

m

se ve ne sono disponibili e restituisce

T

, altrimenti restituisce

F

.

resa(char m)

: registra la restituzione di una bici di modello

m

.

n=n_m_esauriti()

: restituisce il numero dei modelli di bici che hanno tutte e 20 le bici noleggiate.

2. Sia dato un file chiamato

elenco.txt

contenente in ciascuna riga una stringa di caratteri e valore numerico che rappresentano rispettivamente il nome e l’età di una persona. Si scriva una funzione

giovane()

che stampa sul monitor il nome della persona più giovane che si trova nel file. Se le persone più giovani sono più di una, si deve stampare il nome di quella alfabeticamente minore.

3. Sia data una lista circolare

l

a valori interi. Si scriva una funzione

elimina_pos(l, n)

che elimina l’elemento di

l

che si incontra dopo aver scandito la lista di

n

posizioni.

4. Dati i numeri decimali A=124, B=95 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+B+C e si dica se il risultato ottenuto è o no significativo.

Punteggio:

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

10 9 11 3

1.

// bici.h

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

const int N=10;

const int M=20;

struct nolo { char mod;

int fuori; } class biciclette {

nolo R[N];

public:

biciclette() ;

bool noleggia(char m) ; void resa (char id_tipo);

int n_m_esauriti();

}

// bici.h.cc

#include “bici.h”

biciclette::biciclette()

{ char md=a;

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

{ R[i].mod=md;

R[i].fuori=0;

md++;}

}

bool biciclette::noleggia(char m) { for(int i=0, i<N; i++) { if(R[i].mod==m)

{ if (R[i].fuori)>0) { R[i].fuori++;

return T; } } return F; } cout<<”modello inesistente\n”;

return F;}

void biciclette::resa (char m) { for(int i=0, i<N; i++)

if(R[i].mod==m)

{ R[i].fuori--;

return; } cout<<”modello inesistente\n”;

}

int biciclette:: n_m_esauriti ( ) { int cont=0;

for (int i=0; i<N; i++) if(R[i].fuori==M)

cont++;

return cont; }

2.

#include <fstream.h>

#include <string.h>

void giovane {

(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

bool contr=F;

fstream f;

int eta, min;

char *nome, *giov;

f.open(“numeri.txt”, ios::in);

if(f>>giov>>min) ;

else return;

while (f>>nome>>eta)

{ if(eta<min) {

strcpy(nome, giov);

min=eta;

continue;}

if(eta==min) {

if(strcmp(nome,giov)<0) {

strcpy(nome, giov);

min=eta;

continue;}}

}

cout >> giov << »\n » ; f.close();

} 3.

void elimina_pos (elem *&l, int n) {

int x;

elem *aux1, *aux2;

if (l==0) return; //lista vuota

if(l->next==l) // lista con un solo elemento

{ delete l;

l=0;

return;}

aux1=l ;

if(n==0) { for(aux2=l; aux2->next!=l; aux2=aux2->next) ; //caso n==0 l=l->next ;

delete aux1;

aux2->next=l;

return;}

aux2=l->next ;

for(int i=0 ; i<n; i++) // caso generale

{ aux1=aux1-next;

aux2=aux2->next;

}

if(aux2 !=l) { //caso generale : estrazione non testa aux1->next=aux2->next ;

delete aux2 ;

return ; }

else ( aux1->next=aux2->next ; //caso generale: estrazione testa delete aux2 ;

l=aux1->next ; return ; } }

Riferimenti

Documenti correlati

sto anche il contemporaneo potenziam ento degli im pianti di trasm issione e -di quelli di commutazione, in modo da ottenere un ra ­ dicale miglioramento idi

b) i dipendenti che svolgono le attività a rischio di corruzione, relazionano, trimestralmente al dirigente il rispetto dei tempi procedimentali e di qualsiasi

Il conduttore ha d iritto di prelazione se, nelle form e predette ed en tro quindici giorni dalla ricezione della comunicazione di cui al prim o comma,

immobili che dovranno ospitare i richiedenti protezione e rifugiati. Il termine di scadenza della durata del contratto di locazione non potrà essere precedente al 31 dicembre 2019.

- non si procederà ad ammettere alle ulteriori fasi di gara (apertura dell’offerta economica) i concorrenti che avranno ottenuto un punteggio relativo all’Offerta Tecnica –

L’Ufficio federale di statistica comunica inoltre che, rispetto al mese precedente, il livello dei prezzi è aumentato dello 0,2 per cento per i beni indigeni e dell’1,0 per cento per

vetrina: registratori di gran marca, elettrodomestici di ogni tipo, rasoi elettrici; ci sembrava di toccare il cielo con un dito; quando lui, il Ferrandi ci consentiva l’acquisto

La proposta di modifica nasce dall’esigenza di rinnovare il logo, con l’ampliamento della sua denominazione in “Agenzia per la sicurezza territoriale e la protezione civile”,