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.