Corso di Laurea in Matematica. LABORATORIO DI INFORMATICA Compito Totale - 21 Marzo Soluzione degli Esercizi

Documenti analoghi
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Corso di Laurea in Matematica

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

Fondamenti di Informatica

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Dati aggregati. Violetta Lonati

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Esercizi. Stringhe. Stringhe Ricerca binaria

Informatica B

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1. Esercizio 1 - Soluzione

Esercitazione 11. Liste semplici

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Linguaggio C: PUNTATORI

Il linguaggio C. Notate che...

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Informatica 1. Prova di recupero 15 Febbraio 2005

Informatica 1. Prova di recupero 21 Settembre 2001

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

1 (4) 2 (4) 3 (12) 4 (6) 5 (6)

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Programmazione I - Laboratorio

Esercizi su strutture dati

1 Esercizio. 2 Esercizio

una matrice quadrata, determini se è un Un quadrato magico è una matrice NxN

Fondamenti di Informatica 1 Ing.Gestionale (A.A ) - docente Sandro Moriggi RECUPERO. cognome nome

Esercizio 1: calcolo insieme intersezione

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Programmazione ad oggetti

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Ricerca binaria ricorsiva!

Corso di Sistemi di Elaborazione delle informazioni

PROVA SCRITTA 23 MARZO 2010

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

1. Realizzare una funzione: int trovaritardatari(file *fprestiti, FILE *frate, Prestito *dest, int dim)

Fondamenti di Programmazione

Lezione 8 Struct e qsort

ESERCIZIO 1 (5 punti) Convertire in binario il valore, espresso in decimale, Si usi la rappresentazione in virgola fissa.

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 8 Novembre 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Corso di Laurea in Matematica

Programmazione 1 A.A. 2015/2016

Algoritmi di Ricerca. Esempi di programmi Java

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009

Elementi di Informatica e Programmazione PPING 20 aprile 2010 Non saranno corretti elaborati scritti confusamente o con grafia difficilmente leggibile

ESERCIZIO: Lettura/Scrittura Array

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

Esercizi. La funzione swapint() primo tentativo

Esercitazione 12. Esercizi di Ricapitolazione

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Esercizio 1. Esercizio 2

Esercizio 1 - Soluzione

Esercizi di preparazione alla prova scritta

Alberi e alberi binari I Un albero è un caso particolare di grafo

Algoritmi di Ricerca. Esempi di programmi Java

Elementi di Informatica e Programmazione

FONDAMENTI DI INFORMATICA

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 8 Novembre 2010 COGNOME E NOME RIGA COLONNA MATRICOLA

Programmazione Procedurale in Linguaggio C++

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

Scrittura formattata - printf

Metodi statici. Dichiarazione e chiamata di metodi statici

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015

Stringhe e tipi di dati strutturati

Problema: ricerca di un elemento

Programmazione II Compitino (Vers. B)

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Esempio di prova scritta di Fondamenti di Informatica

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Lezione 6 Introduzione al C++ Mauro Piccolo

Algoritmi di Ricerca. Esempi di programmi Java

Il linguaggio C Strutture

Linguaggio C - Array. Array: tipo nome_array[num_elementi]

RIGA COLONNA MATRICOLA

Lab 10 Gestione file di testo

Laboratorio di Programmazione M-Z

1 (4) 2 (4) 3 (7) 4 (5) 5 (6) 6 (6)


I puntatori e l allocazione dinamica di memoria. Esercizi risolti

Esercizio 1 Liste: calcolo perimetro di un poligono

Transcript:

Corso di Laurea in Matematica LABORATORIO DI INFORMATICA 2002-2003 Compito Totale - 21 Marzo 2003 degli Esercizi Esercizio 1. (versione 1) i) Dato il numero binario 1010101111, dire qual è la sua rappresentazione nei sistemi decimale, ottale ed esadecimale. ii) Convertire il numero decimale 227 nella sua rappresentazione binaria. iii) Dato il numero 227 8 nel sistema ottale, dire qual è la sua rappresentazione nei sistemi decimale, binario ed esadecimale. iv) Convertire il numero decimale 39 nella sua rappresentazione binaria in complemento a due. v) Convertire il numero frazionario 0.52 nella sua rappresentazione binaria utilizzando 6 cifre. i) Decimale: 687, ottale: 1257, esadecimale: 2AF. ii) 11100011. iii) Decimale: 151, binario: 10010111, esadecimale: 97. iv) 1011001. v) 0.100001. Esercizio 1. (versione 2) i) Dato il numero binario 1010111101, dire qual è la sua rappresentazione nei sistemi decimale, ottale ed esadecimale. ii) Convertire il numero decimale 231 nella sua rappresentazione binaria. iii) Dato il numero 231 8 nel sistema ottale, dire qual è la sua rappresentazione nei sistemi decimale, binario ed esadecimale. iv) Convertire il numero decimale 43 nella sua rappresentazione binaria in complemento a due. v) Convertire il numero frazionario 0.49 nella sua rappresentazione binaria utilizzando 6 cifre. i) Decimale: 701, ottale: 1275, esadecimale: 2BD. ii) 11100111. iii) Decimale: 153, binario: 10011001, esadecimale: 99. iv) 1010101. v) 0.011111. 1

Esercizio 2. Si consideri il seguente frammento di programma in linguaggio macchina, memorizzato a partire dalla locazione di memoria di indirizzo 100: 100 READ 11 101 READ 12 102 LOADA 12 103 LOADB 10 104 DIF 105 JUMPZ 114 106 LOADB 11 107 DIF 108 JUMPZ 112 109 LOADA 12 110 STOREA 11 111 JUMP 101 112 WRITE 12 113 JUMP 115 114 WRITE 10 115 HALT Si supponga che la cella di memoria di indirizzo 10 contenga il valore 0. Data una sequenza di numeri interi n 1, n 2,..., n k in ingresso, dire che cosa fa il programma e che cosa viene stampato in uscita. Dire che cosa viene stampato nel caso in cui in ingresso si abbiano le sequenze 2 4 4 7 0 e 3 1 3 0. Il programma confronta ogni numero della sequenza (a partire dal secondo) con il numero che lo precede e, non appena trova due numeri adiacenti uguali, stampa tale numero, altrimenti stampa 0. Data in ingresso la sequenza 2 4 4 7 0, il programma stampa 4 e poi termina. Data in ingresso la sequenza 3 1 3 0, il programma stampa 0 e poi termina. Esercizio 3. (versione 1) Scrivere una procedura in C che, data una matrice quadrata n n di caratteri, stampa i caratteri presenti nel triangolo in alto a destra inclusa la diagonale. Ad esempio, data la matrice o p q r s t u v z la procedura stampa i caratteri opqstz. #define n 3 typedef char Matrice[n][n]; void triangolo_ad (Matrice m) { int i,j; for (i=0; i<n; i++) for (j=i; j<n; j++) printf("%c", m[i][j]); Nella versione 2 dell Esercizio 3 si richiede una procedura che stampa i caratteri presenti nel triangolo in basso a sinistra inclusa la diagonale. Ad esempio, data la stessa matrice della versione 1, la procedura stampa i caratteri orsuvz. void triangolo_bs (Matrice m) { int i,j; for (i=0; i<n; i++) for (j=0; j<=i; j++) printf("%c", m[i][j]); Esercizio 4. (versione 1) Definire una struttura C che rappresenta una data ed una struttura C che riflette i dati di un auto: marca (es. Fiat, Alfa Romeo,...), tipo (es. punto, bravo, stilo,...), una provincia (es. RI, MI,...), una targa (unica per ogni auto e supposta intera) e la data di immatricolazione. Supponendo che: - esiste un vettore dove sono contenute tutte le auto, - l elemento i-esimo del vettore non contiene i dati di un auto se la targa è pari a zero, scrivere le seguenti procedure o funzioni che: - confrontano due date verificando se una è piú recente dell altra; - stampano i dati di tutte le auto immatricolate dopo una data d o un messaggio di avviso 2

se non vi sono auto nel vettore. typedef char string[10]; typedef struct{ int giorno; int mese; int anno; data; typedef struct { char provincia[2]; int targa; string marca; string tipo; data imm; automobile; int compara_date(data d,data d1) { if (d.anno > d1.anno) return 1; if (d.mese > d1.mese) return 1; if (d.mese == d1.mese) if (d.giorno > d1.giorno) return 1; if (d.mese == d1.mese) if (d.giorno == d1.giorno) return 0; /* date uguali */ return -1; /*in tutti gli altri casi d precede d1*/ void recenti(automobile v[], data d, int dim) { int i; for (i=0; (i<dim)&&(v[i].targa == 0); i++); if (i == dim){ printf("non sono presenti auto nel database\n"); return; for (i=0; i<dim; i++){ if (compara_date(v[i].imm,d) > 0){ printf("%s %s\n", v[i].marca, v[i].tipo); printf("%s %d\n", v[i].provincia, v[i].targa); printf("%d/%d/%d\n", v[i].imm.giorno, v[i].imm.mese, v[i].imm.anno); Nella versione 2 dell Esercizio 4 si richiede di stampare i dati di tutte le auto immatricolate prima di una data d, per cui basta sostituire il confronto (compara date(v[i].imm,d) > 0) con (compara date(v[i].imm,d) < 0). 3

Esercizio 5. (versione 1) Scrivere una funzione ricorsiva in C che, dato un array di interi a, restituisce true se il valore assoluto della differenza tra due elementi adiacenti di a è non crescente, e restituisce false altrimenti. Ad esempio, dato l array {7, 2, 2, 6, 4, la funzione restituisce true poiché 5 > 4 4 > 2. #define n 5 typedef int Array[n]; typedef enum {false,true boolean; boolean non_cresc (Array a) { int abs (int x); boolean diff_non_cresc (Array a, int d, int i); return diff_non_cresc(a,abs(a[0]-a[1]),1); boolean diff_non_cresc (Array a, int d, int i) { int abs (int x); int d1; if (i == n-1) return true; d1 = abs(a[i]-a[i+1]); if (d1 > d) return false; return diff_non_cresc(a,d1,i+1); int abs (int x) { if (x < 0) return -x; return x; Nella versione 2 dell Esercizio 5 si richiede una funzione ricorsiva che, dato un array di interi a, restituisce true se il valore assoluto della differenza tra due elementi adiacenti di a è non decrescente, e restituisce false altrimenti. Nella soluzione data sopra basta sostituire il confronto (d1 > d) con (d1 < d). Esercizio 6. Scrivere una procedura in C (non una funzione) che, dati in ingresso una stringa s ed un carattere c, restituisca in un terzo parametro intero il numero di occorrenze di c all interno di s. Ad esempio, il carattere c occorre 5 volte in "abccbccc". Scrivere inoltre un main in cui si utilizza la procedura precedentemente dichiarata. void conta_occorrenze(char s[], char c, int *count) { int i, val; val = 0; for (i=0; s[i]!= \0 ; i++) if (s[i] == c) val = val+1; *count = val; return; 4

main() { int val; conta_occorrenze("abccbccc", c,&val); printf("%d",val); return 0; 5