Politecnico di Torino



Documenti analoghi
Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Problem solving avanzato

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Funzioni. Il modello console. Interfaccia in modalità console

Fondamenti di Informatica 2

Gestione dei File in C

Algoritmi di Ricerca. Esempi di programmi Java

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Introduzione alla programmazione in C

Lab 11 Gestione file di testo"

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Le variabili. Olga Scotti

Compito di Fondamenti di Informatica

puntatori Lab. Calc. AA 2007/08 1

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

La selezione binaria

Esercizio 1. Esercizio 1

CREARE UNA LIBRERIA IN C

Esame del 3 febbraio 2010

Le stringhe. Le stringhe

Funzioni in C. Violetta Lonati

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

RICERCA DI UN ELEMENTO

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

GESTIONE INFORMATICA DEI DATI AZIENDALI

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Codifica: dal diagramma a blocchi al linguaggio C++

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

La ricorsione. Politecnico di Milano Sede di Cremona

Inizializzazione, Assegnamento e Distruzione di Classi

Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili

Esempio: Array di struct

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 4A di Martedì 21 Giugno 2011 tempo a disposizione 2h

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Corso di Informatica

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Corso di Fondamenti di Informatica

La struttura dati ad albero binario

Trading System StepByStep

SOLUZIONE ESERCIZIO 1

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

3. La sintassi di Java

Ricerca sequenziale di un elemento in un vettore

Arduino: Programmazione

Lab. di Sistemi Operativi - Esercitazione n 9- -Thread-

Introduzione alla teoria dei database relazionali. Come progettare un database

Politecnico di Milano - Facoltà di Ingegneria INFORMATICA A - Corso per allievi GESTIONALI - Prof. C. SILVANO A. A. 2001/ febbraio A

Esercizio 1. Esercizio 2

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Concetto di Funzione e Procedura METODI in Java

Corso di Fondamenti di Informatica Algoritmi su array / 2

Introduzione al linguaggio C Gli array

Algoritmi su array / 2

Esame di Informatica Generale 9 CFU 21 Giugno 2011 Professori: Carulli, Fiorino, Mazzei

Allocazione dinamica della memoria - riepilogo

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appello di Informatica B

Introduzione al MATLAB c Parte 2

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Rendering air show e verifica della sincronizzazione

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Esercizi Capitolo 6 - Alberi binari di ricerca

Caratteri e stringhe Esercizi risolti

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

I puntatori e l allocazione dinamica di memoria

dall argomento argomento della malloc()

Contabilità: Estratto conto e scadenzario

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Introduzione al Linguaggio C

Descrizione di un algoritmo

Lezione 10: Librerie e compilazione separata

SAPIENZA Università di Roma, Facoltà di Ingegneria

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Transcript:

Politecnico di Torino INFORMATICA II Esame del 19 Luglio 2008 1. Realizzare un programma in linguaggio C per evidenziare le variazioni percentuali di un insieme di azioni quotate in borsa. In un file di tipo testo sono elencate tutte le società quotate nella borsa di riferimento e le loro sigle. Il file si chiama BORSA.TXT ed ogni riga ha il seguente formato: <sigla> <nome della società> dove <sigla> è una stringa lunga al massimo 4 caratteri (senza spazi intermedi); <nome della società> è formato da un numero imprecisato di parole ed occupa il resto della riga. Esempio (del contenuto del file BORSA.TXT): F Fiat ENEL Ente Nazionale Energia Elettrica ENI Ente Nazionale Idrocarburi PMI Banca Popolare di Milano G Assicurazioni Generali MB Mediobanca STM S.T. Microelectronics CLE Class Editori In due altri files, i cui nomi sono passati sulla linea di comando, rispettivamente come primo e secondo parametro, sono contenuti i dati riguardanti i valori di uno stesso gruppo di azioni (al massimo 100) alla chiusura delle contrattazioni di due giorni consecutivi. Il gruppo di azioni è lo stesso nei due files ma l ordine con cui sono elencate è diverso. (Il gruppo delle azioni elencate in questi due file è pertanto un sottoinsieme dell elenco presente in BORSA.TXT). Ogni riga di questi due file ha il seguente formato: <sigla> <valore di chiusura> dove <sigla> è una delle sigle presenti nel file BORSA.TXT e <valore di chiusura> è il valore in euro al termine della giornata considerata. Il programma deve produrre il resoconto delle variazioni visualizzando sul monitor una riga per ogni azione presente nei due file, con le seguenti informazioni: 1. Sigla. 2. Nome esteso della società. 3. Valore di chiusura del primo dei due giorni considerati. 4. Valore di chiusura del secondo dei due giorni considerati. 5. Incremento percentuale del valore (positivo se ha guadagnato, negativo se ha perduto). L output deve essere ordinato in base all incremento percentuale (dal migliore al peggiore)

Ad esempio, se il primo file (il cui nome sia ad esempio IERI.TXT ) contenesse i seguenti dati: MB 3.950 ENI 7.080 G 39.150 STM 48.250 ed il secondo file (di nome OGGI.TXT ) contenesse i seguenti dati: STM 50.000 MB 4.200 G 40.500 ENI 6.750 Se il nome del programma fosse quotazioni.exe, allora il comando: deve generare il seguente output: quotazione.exe IERI.TXT OGGI.TXT MB Mediobanca 3.950 4.20 +6.3% STM S.T. Microelectronics 48.250 50.00 +3.6% G Assicurazioni Generali 39.150 40.50 +3.4% ENI Ente Nazionale Idrocarburi 7.080 6.75-4.7% 2 Teoria 1) Quali sono le fasi di esecuzione di un istruzione? 2) Che cos è un ipertesto? Programma #include <stdio.h> #include <string.h> typedef enumfalso, vero boolean; /* Base dati: un unica struttura con tutti I dati di output! */ typedef struct

char sigla[5]; char nome[76]; double ieri; double oggi; double perc; dati; /* prototipo funzione di riordinamento in base alla percentuale */ void bubble (dati borsa[], int n); int main(int argc, char *argv[]) dati vett[100]; char sigla[5], nome_soc[76]; boolean trovato; double val; int i, j, k; FILE *fp; if (argc!= 3) printf("\nerrore nel numero dei parametri!"); exit(2); if((fp=fopen(argv[1], "r"))==null) printf("\nerrore nell'apertura di %s", argv[1]); exit(0); /* Lettura del primo file (dati del giorno prima) */ i = 0; while (!feof(fp)) fscanf(fp,"%s%lf", vett[i].sigla, &vett[i].ieri); i++; fclose (fp); if((fp=fopen(argv[2], "r"))==null) printf("\nerrore nell'apertura di %s", argv[2]); exit(1); /* Lettura del secondo file (dati del giorno dopo) */ for(j=0; j<i; j++) fscanf(fp,"%s%lf", sigla, &val); /* Cerca nella struttura la sigla corretta per inserire il valore */ k = 0; trovato = falso; while (!trovato) if (strcmp(sigla, vett[k].sigla)==0)

trovato = vero; vett[k].oggi = val; /* Ora può calcolare la percentuale di variazione */ vett[k].perc = ((vett[k].oggi - vett[k].ieri) / vett[k].ieri) * 100.0; else k++; /* Riordina il vettore di strutture in base al campo percentuale */ bubble (vett, i); if((fp=fopen("borsa.txt", "r"))==null) printf("\nerrore nell'apertura di BORSA.TXT"); exit(0); /* Ora legge il file BORSA.TXT e per ogni sigla che legge controlla se corrisponde a una sigla del vettore di strutture */ while (!feof(fp)) fscanf(fp,"%s", sigla); /* legge il nome completo della società: possono essere molte stringhe */ fgets (nome_soc, 75, fp); /* sostituisce il new line fornito da fgets con fine stringa */ k = strlen(nome_soc); if (nome_soc[k-1] == '\n') nome_soc[k-1] = '\0'; /* Controlla se la sigla compare nel vettore di strutture! */ j = 0; trovato = falso; while (!trovato && j < i) if (strcmp(sigla, vett[j].sigla) == 0) strcpy(vett[j].nome, nome_soc); trovato = vero; else j++; fclose(fp); /* Output finale: visualizza i dati nella struttura */ for (j=0; j<i; j++) printf("\n%s \t%s %lf %lf %+lf \% ", vett[j].sigla, vett[j].nome, vett[j].ieri, vett[j].oggi, vett[j].perc); /* Funzione di riordinamento in base al campo percentuale */ void bubble (dati borsa[], int n) dati provv;

int i; boolean inordine = falso; while (!inordine) inordine = vero; for (i=0; i<n-1; i++) if (borsa[i].perc < borsa[i+1].perc) provv = borsa[i]; borsa[i] = borsa[i+1]; borsa[i+1] = provv; inordine = falso;