QUESITI
Algoritmi su vettori record
Esercizio 1
Si consideri una sequenza A di n elementi (1 ≤ n ≤ 100), ciascuno dei quali sia rappresentato da una
stringa di 4 caratteri. Gli elementi di A sono distinti ed ordinati in modo non decrescente.
Si consideri quindi una sequenza B di m (1 ≤ m ≤ 1000) elementi ciascuno dei quali è rappresentato
con un record avente 2 campi: il primo campo codice assume valori costituiti da stringhe di 4
caratteri ed il secondo campo numero assume valori interi. Il campo codice è una chiave ed
individua quindi un unico record. (Non vi sono, cioè, 2 record aventi lo stesso valore del campo
codice)
Si vuole scrivere un programma in grado di ricercare e stampare per ogni elemento di A il
corrispondente elemento di B avente il campo codice uguale.
Esempio
n
3
A[1]
Bari
m
4
A[2]
Pisa
A[3]
Roma
B
Roma
Moto
Bari
Auto
100
30
10
100
Risultato della stampa
Bari
Roma
10
100
a) Si descriva un algoritmo che dati in ingresso un intero n, un vettore A, un intero m ed un
vettore B, produca la stampa secondo le specifiche. Si codifichi quindi tale algoritmo con
una procedura.
b) Si scriva quindi un programma che legga i dati di ingresso n, A, m, B ed utilizzi la procedura
per produrre la stampa richiesta.
c) Quante volte viene scandito il vettore B dall’ algoritmo descritto in 1?
d) Si potrebbe introdurre qualche ipotesi sui dati per rendere più efficiente il programma?
Esercizio 2
Si consideri un elenco comprendente i nomi dei calciatori di una squadra ed inoltre per ciascun
calciatore il numero di presenze in squadra e il numero di reti segnate.
Si vuole determinare il numero di reti segnate complessivamente dalla squadra. Inoltre si vuole
calcolare per ciascun giocatore la percentuale di partite giocate e la percentuale di reti segnate sul
numero totale di reti, segnate complessivamente dalla squadra.
a) Si descriva inizialmente la soluzione mediante diagrammi di flusso o linguaggio naturale. Si
codifichi quindi in Pascal.
b) Il problema richiede di memorizzare una sequenza di record, aventi i seguenti campi: Nome
giocatore, presenze e reti. Effettuare due implementazioni diverse: nella prima utilizzare un
vettore di record, nella seconda un file di record.
Algoritmi su text file
Esercizio 3
Si consideri un file di testo f. Si vuole calcolare per ogni possibile lunghezza l il numero delle
parole presenti in f che hanno quella lunghezza.
Si suggerisce di ignorare l’apostrofo, considerarlo cioè come un blank.
a) Si descriva inizialmente la soluzione mediante diagrammi di flusso o linguaggio naturale. Si
codifichi quindi in Pascal.
b) Qual è la struttura dati idonea per la memorizzazione del numero di parole che hanno una
lunghezza l?
Esercizio 4
Si consideri un file di testo f. Si vuole inizialmente contare le linee del file e quindi eliminare la
linea n.ma.
a) Si descriva inizialmente la soluzione mediante diagrammi di flusso o linguaggio naturale. Si
codifichi quindi in Pascal.
b) Utilizzare due procedure parametriche per realizzare le due funzioni richieste.
Esercizio 5
Si consideri un file di testo f ed un elenco di n parole. Si vuole costruire una tabella in cui per ogni
parola è riportato il numero di volte in cui quella parola è presente nel testo.
a)
Si descriva inizialmente la soluzione mediante diagrammi di flusso o linguaggio naturale. Si
codifichi quindi in Pascal.
Nota La tabella può essere realizzata con un array di record.
Algoritmi su file
Esercizio 6
Scrivere un programma per la gestione di un file i cui elementi siano costituiti dai seguenti campi:
Codice alfanumerico
Nominativo
Data
Il programma deve consentire di scegliere tra le seguenti funzioni:
Inserimento di un elemento
Stampa di un elemento
Stampa del file.
Esercizi vari
Esercizio 8
Realizzare tramite una procedura parametrica un algoritmo ricorsivo per determinare la somma di n
numeri interi.
Esercizio 9
Scrivere una funzione che calcoli la distanza di un punto di coordinate (x, y) dall’ori gine (0,0) di un
sistema di assi cartesiani.
Esercizio 10
Scrivere una funzione che converta una stringa di cifre nel numero decimale corrispondente.