Lab 7 Passaggio per riferimento

Documenti analoghi
Lab 7 Passaggio per riferimento

Lab 10 Passaggio per riferimento

Esercizio 1. Esercizio 1 Soluzione

Passaggio dei parametri per valore/riferimento

Fondamenti di Informatica T-1 Modulo 2

Obiettivi di questa esercitazione

Fondamenti di Informatica T-1 Modulo 2

Lab 10 Passaggio per riferimento

Obiettivi di questa esercitazione. Fondamenti di Informatica T-1 Modulo Passaggio dei parametri per valore/riferimento

Fondamenti di Informatica T-1 Modulo 2

Problem solving elementare su dati scalari. Esercizi risolti

Esercizio 1 Soluzione

Accenni al calcolo combinatorio

Informatica 3. Informatica 3. LEZIONE 18: Ordinamento. Lezione 18 - Modulo 1. Introduzione. Analisi algoritmi di ordinamento.

i-esima statistica d ordine di un insieme = i-esimo elemento più piccolo

Insiemi numerici. Sono noti l insieme dei numeri naturali: N = {1, 2, 3, }, l insieme dei numeri interi relativi:

Soluzioni degli esercizi di Analisi Matematica I

Esercizio 1 - Soluzione (array)

Fondamenti di Informatica T-1 Modulo 2

Il compilatore deve conoscere l interfaccia della funzione per fare il check sintattico di un istruzione che la usa, quindi:

Prova parziale 30 aprile 2018 Possibili soluzioni

Algoritmi e Strutture Dati Esercizi Prima parte

Liceo Scientifico Statale G. Stampacchia Tricase Tempo di lavoro 120 minuti

Attivazione di funzione e record di attivazione

Fondamenti di Informatica T1. Lab 04 Array. Lab06 1

Esercizi sui numeri complessi per il dodicesimo foglio di esercizi

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 05 Array. Lab06 1

Esercitazioni di. Arnaud Nguembang Fadja : Alessandro Bertagnon :

REGRESSIONE LINEARE E POLINOMIALE

CAPITOLO 3. Quicksort

Fondamenti di Informatica T-1 Modulo 2

= = 32

Appunti complementari per il Corso di Statistica

UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II FACOLTÀ DI INGEGNERIA LAFIDIN

Fondamenti di Informatica T-1 Modulo 2

algoritmi e strutture di dati

Esercizi Determinare il dominio di de nizione delle seguenti funzioni: a.

Obiettivi di questa esercitazione

Programmazione dinamica vs. divide-et-impera

Tutorato di Probabilità 1, foglio I a.a. 2007/2008

Precorso di Matematica, aa , (IV)

T n = f n log n = log n. 1 ] 1 ] 1 = sono verificate le disuguaglianze c 1

Esercizio 1 - cicli. Esercizio 1 cicli - Soluzione

Soluzioni degli esercizi del corso di Analisi Matematica I

Esercizio 1. Esercizio 1 Soluzione

Teorema delle progressioni di numeri primi consecutivi con distanza sei costante

2,3, (allineamenti decimali con segno, quindi chiaramente numeri reali); 4 ( = 1,33)

Algoritmi e Strutture Dati (Mod. B) Programmazione Dinamica (Parte I)

Campionamento casuale da popolazione finita (caso senza reinserimento )

Introduzione all Analisi di Fourier. Prof. Luigi Landini Ing. Nicola Vanello. (presentazione a cura di N. Vanello)

Disposizioni semplici

Stima di somme: esercizio

CALCOLO COMBINATORIO

Ricerca di un elemento in una matrice

COMPLESSITA COMPUTAZIONALE ESERCITAZIONI (I PARTE) Tutor: Francesca Piersigilli

Fondamenti di Informatica T-1 Modulo 2

Sintesi. Le funzioni in C++ Motivazioni. Programmazione delle funzioni. Esempio (1.1) Esempio (1)

Congruenze in ; l insieme quoziente / n

1 Esponenziale e logaritmo.

Radici, potenze, logaritmi in campo complesso.

06 LE SUCCESSIONI DI NUMERI REALI

ELEMENTI DI CALCOLO COMBINATORIO

Fondamenti di Informatica T-1 Modulo 2

Principio di induzione: esempi ed esercizi

Algoritmi e Strutture di Dati

Elementi di calcolo combinatorio

(a 0, a 1, a 2,..., a n,...) (0, a 0 ), (1, a 1 ), (2, a 2 ),... (1, 3, 5, 7,...) Lezione del 26 settembre. 1. Successioni.

1. Passaggio dei parametri per valore/riferimento 2. Trattamento degli errori: funzioni che

Consideriamo un insieme di n oggetti di natura qualsiasi. Indicheremo questi oggetti con

Probabilità e Statistica (cenni)

I TRIANGOLI ARITMETICI

IPSAA U. Patrizi Città di Castello (PG) Classe 5A Tecnico Agrario. Lezione di martedì 10 novembre 2015 (4 e 5 ora) Disciplina: MATEMATICA

Analisi Matematica Soluzioni prova scritta parziale n. 1

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A

2.5 Calcolo dello stato di deformazione e sforzo in corrispondenza ad una concentrazione di tensione con superamento del limite di plasticizzazione

Le successioni: intro

SECONDO ESONERO DI AM1 10/01/ Soluzioni

Esercitazioni del corso: STATISTICA

Congruenze in ; l insieme quoziente / n

RISOLUZIONE MODERNA DI PROBLEMI ANTICHI

UNITA 1 STRUTTURA DELLA MATERIA

APPLICAZIONI di MATEMATICA A.A

Esame di Stato di Liceo Scientifico- Sessione ordinaria 2003 Corso Sperimentale P.N.I. Tema di MATEMATICA

Corso Propedeutico di Matematica

ESERCIZI PER IL CORSO DI ANALISI MATEMATICA A

Ancora con l induzione matematica

Aritmetica 2016/2017 Esercizi svolti in classe Seconda lezione

Calcolo Numerico A.A Esercitazione n

n + 1 n + 2 = 1 n + 1 n n n Esercizio. Verificare il seguente limite a partire dalla definizione: n n 2 + n + 1 = 0 lim

TEORIA DELLE MATRICI. dove aij K. = di ordine n, gli elementi aij con i = j (cioè gli elementi a 11

LE MISURE DI TENDENZA CENTRALE

Vettori e versori. Nel caso in cui α è positivo, il vettore ed il versore hanno lo stesso verso, mentre nel caso contrario, hanno verso opposto.

Algoritmi e Programmazione Avanzata - teoria. Questa lezione si occupa di ordinamenti: gli algoritmi iterativi di ordinamento

SUCCESSIONI SERIE NUMERICHE pag. 1

Transcript:

Fodameti di Iformatica e Laboratorio T-AB Igegeria Elettroica e Telecomuicazioi Lab 7 Passaggio per riferimeto Lab7 1

Esercizio 1 I umeri complessi Data la otazioe cartesiaa di u umero complesso (i parte reale ed immagiaria), Realizzare ua procedura che e restituisca la otazioe polare (tramite parametri passati per riferimeto) Si usi opportuamete la fuzioe ata2(float im, float re) della libreria math.h 2 r = re + im æ im j = arctaç è re La fuzioe ata2 gestisce correttamete ache il caso i cui re==0. Se così o fosse? Si esteda la fuzioe di coversioe i modo da cotrollare la correttezza dei parametri: la fuzioe restituisca u codice di errore se ecessario. 2 ö ø void coverti_complex(float re, float im, float * modulo, float * argometo) Lab7 2

Esercizio 1 Per utilizzare math.h è ecessario idicare esplicitamete al liker di cosiderare la libreria Fare click destro sul progetto correte, poi settigs Adate ella pagia (tab) del liker Nel campo optios scrivete: -lm -l idica al liker di utilizzare ua libreria m è il ome della libreria corrispodete a math.h Lab7 3

Esercizio 1 Soluzioe #iclude <math.h> #iclude <stdio.h> void coverti_complex( float re, float im, float * modulo, float * argometo) { *modulo = sqrt(re*re + im*im); *argometo = ata2(im, re); retur; it mai() { float modulo, argometo; coverti_complex(1.0, 1.0, &modulo, &argometo); pritf( Modulo: %f\ Argometo: %f\, modulo, argometo); Lab7 4

Esercizio 1 Soluzioe (variate) #iclude <math.h> #iclude <stdio.h> it coverti_complex( float re, float im, float * modulo, float * argometo) { if (re==0) retur -1; *modulo = sqrt(re*re + im*im); *argometo = ata2(im, re); retur 0; it mai() { float modulo, argometo; coverti_complex(1.0, 1.0, &modulo, &argometo); pritf( Modulo: %f\ Argometo: %f\, modulo, argometo); Lab7 5

Esercizio 2 Somma di due umeri complessi Realizzare ua procedura che riceva i igresso due umeri complessi U umero complesso è dato da ua coppia rappresetate la parte reale e la parte immagiaria La procedura deve restituire la somma di tali valori (acora ua coppia) Realizzare ache u mai di esempio Lab7 6

Esercizio 2 - Soluzioe void somma_complex( float rea, float ima, float reb, float imb, float * reresult, float * imresult) { *reresult = rea + reb; *imresult = ima + imb; retur; it mai() { float reresult, imresult; somma_complex(1.0, 1.0, 2.0, 2.0, &reresult, &imresult); pritf( Parte reale: %f\ Parte Immagiaria: %f\, reresult, imresult); Lab7 7

Esercizio 3 Realizzare ua fuzioe che riceva i igresso u array di iteri e la sua dimesioe, u elemeto da cercare ed u itero passato per riferimeto. La fuzioe deve restituire u valore iterpretabile come vero se l elemeto è presete ell array. Ioltre, tramite l itero passato per riferimeto, la fuzioe deve restituire ache la posizioe dell elemeto ell array Realizzare ache u mai di esempio Lab7 8

Esercizio 3 - Soluzioe it trovapos(it vet[], it dim, it el, it *pos) { it trovato, i; trovato = 0; for (i=0; i<dim && trovato==0; i++) { if (vet[i] == el) { trovato = 1; *pos = i; retur trovato; Lab7 9

Esercizio 4 U sistema di croometraggio per la Formula 1 registra i tempi i millisecodi. Tuttavia tali tempi devoo essere presetati i termii di miuti, secodi e millisec. Creare ua procedura che, ricevuti i igresso u tempo dato i millisecodi, restituisca l equivalete i termii di miuti, secodi, millisec. (tramite evetuali parametri passati per riferimeto) Si realizzi u mai che ivoca la fuzioe, e che dopo aver chiesto all utete u valore idicate ua durata i millisecodi, stampi a video il tempo el formato mi:sec.millisec Lab7 10

Esercizio 4 - Soluzioe #iclude <stdio.h> #iclude <stdlib.h> void frommillisec(it millisec, it * mm, it * sec, it * mi) { *mm = millisec % 1000; *sec = millisec / 1000; *mi = *sec / 60; *sec = *sec % 60; retur; it mai(void) { it millisec, mm, sec, mi; pritf("iserisci u tempo i millisec.: "); scaf("%d", &millisec); frommillisec(millisec, &mm, &sec, &mi); pritf("tempo: %d:%d.%d\", mi, sec, mm); system("pause"); retur (0); Lab7 11

Esercizio 5 U sistema di gestioe mp3 permette di calcolare i aticipo la durata di ua compilatio di brai. Creare ua procedura che, ricevuti i igresso la durata di due pezzi musicali, i termii di ore, miuti e secodi, restituisca la durata risultate dalla somma dei due brai i termii di ore, miuti e secodi. Si realizzi u mai che chieda all utete di iserire la durata di diversi brai musicali, e si stampi a video la durata totale (l utete segala il termie dei brai da iserire co u brao speciale di lughezza 0:00.00). Lab7 12

Esercizio 5 - Soluzioe #iclude <stdio.h> #iclude <stdlib.h> void sommatempi(it h1, it m1, it s1, it h2, it m2, it s2, it * hr, it * mr, it * sr) { *sr = s1 + s2; *mr = *sr / 60; *sr = *sr % 60; *mr = *mr + m1 + m2; *hr = *mr / 60; *mr = *mr % 60; *hr = *hr + h1 + h2;... Lab7 13

Esercizio 5 - Soluzioe... it mai(void) { it h1, h2=0; it m1, m2=0; it s1, s2=0; it i=1; do { pritf("iserisci la durata della cazoe umero %d (hh:mm:ss): ", i); scaf("%d%d%d", &h1, &m1, &s1); if (! (h1==0 && m1==0 && s1==0)) sommatempi(h1, m1, s1, h2, m2, s2, &h2, &m2, &s2); i++; while (! (h1==0 && m1==0 && s1==0)); pritf("durata totale: %dh:%dm:%ds\", h2, m2, s2); system("pause"); retur (0); Lab7 14

Esercizio 6 Realizzare ua procedura che, ricevuti i igresso u vettore di iteri e la sua dimesioe, e due iteri passati per riferimeto di ome pari e dispari, restituisca il umero di iteri pari e di iteri dispari preseti ell array. Si realizzi u mai che, utilizzado ua appropriata fuzioe, legga dall utete ua sequeza di al più 10 umeri (termiati da zero), e utilizzado la procedura di cui al puto precedete, stampi a video quati umeri pari e dispari soo stati iseriti. Lab7 15

Esercizio 6 - Soluzioe #iclude <stdio.h> #iclude <stdlib.h> it leggi(it vet[], it dim) { it i, um; i=0; do { pritf("iserisci umero: "); scaf("%d", &um); if (um!= 0) { vet[i] = um; i++; while (um!=0 && i<dim); retur i; void cotaparidisp(it vet[], it dim, it * pari, it * disp) { it i; *pari = 0; *disp = 0; for (i=0; i<dim; i++) { if ( (vet[i]%2)==0) (*pari)++; else (*disp)++; Lab7 16

Esercizio 6 - Soluzioe it mai(void) { it vet[10], pari, disp, dim; dim = leggi(vet, 10); cotaparidisp(vet, dim, &pari, &disp); pritf ("l'array cotiete %d umeri pari e %d dispari", pari, disp); system("pause"); retur (0); Lab7 17

Esercizio 7 Creare u programma che legga da iput due sequeze di iteri, di lughezza o ota a priori (al più 10), e termiate da 0. A tal fie, si realizzi ua fuzioe apposita che riceva come parametri u vettore vuoto (da riempire) e la sua dimesioe fisica, e restituisca la dimesioe logica. Per semplicità, si ipotizzi che ogi sequeza o cotega elemeti ripetuti Il programma poi memorizzi i u terzo vettore tutti gli elemeti che compaioo i etrambi gli array iiziali (itersezioe), e lo si stampi a video (si realizzi la fuzioalità di itersezioe, o la stampa sia seza co co ua fuzioe) 18 Lab7 18

Esercizio 7 - Soluzioe #iclude <stdio.h> #iclude <stdlib.h> #defie DIM 10 it leggi(it vet[], it dim) { it size = 0, um; do { pritf("iserisci u umero: "); scaf("%d", &um); if (um!=0 && size<dim) { vet[size] = um; size++; while (um!=0 && size<dim); retur size; it mai(void) { it um, size1, size2, size3, i, j, trovato; it values1[dim], values2[dim], itersez[dim]; size1 = 0; size2 = 0; size3 = 0; size1 = leggi(values1, DIM); size2 = leggi(values2, DIM); 19 Lab7 19

Esercizio 7 - Soluzioe for (i=0; i<size1; i++) { trovato = 0; for (j=0; j<size2 &&!trovato; j++) if (values1[i] == values2[j]) trovato = 1; if (trovato) { itersez[size3] = values1[i]; size3++; for (i=0; i<size3; i++) pritf("valore comue: %d\", itersez[i]); retur (0); 20 Lab7 20

Esercizio 7 - Variate it itersezioe(it vet1[], it vet2[], it size1, it size2, it iter[]){ it trovato=0, size3=0, i, j; for (i=0; i<size1; i++) { trovato = 0; for (j=0; j<size2 &&!trovato; j++){ if (vet1[i] == vet2[j]) trovato = 1; if (trovato) { iter[size3] = vet1[i]; size3++; retur size3; Lab7 21

Esercizio 7 - Variate it mai(it argc, char **argv) { it size1, size2, size3, i; it values1[dim], values2[dim], itersez[dim]; size1 = 0; size2 = 0; size3 = 0; size1 = leggi(values1, DIM); size2 = leggi(values2, DIM); size3 = itersezioe(values1, values2, size1, size2, itersez); for (i=0; i<size3; i++) pritf("valore comue: %d\", itersez[i]); retur 0; Lab7 22

Esercizio 8 Si vuole realizzare ua fuzioe che, dati u array di valori iteri, ordiati o ripetuti, e due valori estremi, restituisca il sotto-array compreso tra i due estremi. Tale fuzioe quidi riceverà i igresso u vettore di iteri e la sua dimesioe; due iteri di ome first e last ; u itero dim passato per riferimeto. La fuzioe dovrà restituire u putatore all elemeto dell array pari a first, se presete, e tramite dim la dimesioe logica del sotto-array Ad esempio, se ivocata co v={1,2,3,5,6,8,9, first=3, last=8, la fuzioe deve restituire il putatore all elemeto all idice 2 (&v[2]), e dimesioe 4. Lab7 23

Esercizio 8 - Soluzioe it * select(it v[], it legth, it first, it last, it * dim) { it i; it * result; i=0; while (i<legth && first>v[i]) i++; result = &(v[i]); *dim = 0; while (i<legth && last>=v[i]) { i++; *dim = *dim + 1; retur result; Lab7 24

Esercizio 8 - Soluzioe it mai(void) { it v[10], dim_v; it * v2; it dim_v2; it first, last, i; dim_v = leggi(v, 10); pritf("iserisci i due estremi: "); scaf("%d%d", &first, &last); v2 = select(v, dim_v, first, last, &dim_v2); for (i=0; i<dim_v2; i++) pritf("%d ", v2[i]); system("pause"); retur (0); Lab7 25

Esercizio 9 Creare u programma che legga da iput ua sequeza di iteri, di lughezza o ota a priori (al più 10), e termiata da 0. A tal scopo, si realizzi ua fuzioe che riceva come parametri di igresso u vettore e la sua dimesioe fisica, e restituisca la dimesioe logica del vettore. Tale fuzioe si deve fare carico della fase di lettura e riempimeto dell array. La sequeza può coteere elemeti ripetuti (ache più volte). Si realizzi ua fuzioe che, ricevuti i igresso il primo vettore co la sua dimesioe logica, ed u secodo vettore co la sua dimesioe fisica, memorizzi el secodo vettore tutti gli elemeti del primo, ma seza ripetizioi. La fuzioe restituisca la dimesioe logica del secodo vettore. Si realizzi u mai che ivochi le fuzioi, e che stampi a video l eleco degli elemeti o ripetuti 26 Lab7 26

Esercizio 6 - Soluzioe #iclude <stdio.h> #iclude <stdlib.h> #defie DIM 10 it leggi(it vet[], it dim) { it size = 0, um; do { pritf("iserisci u umero: "); scaf("%d", &um); if (um!=0 && size<dim) { vet[size] = um; size++; while (um!=0 && size<dim); retur size; 27 Lab7 27

Esercizio 6 - Soluzioe it elimiaripetuti(it[] values, it dim_v, it[] sigle, it dim_s) { it size_s = 0; it i, j, trovato; for (i=0; i<dim_v && size_s < dim_s; i++) { trovato = 0; for (j=0; j<size_s &&!trovato; j++) { if (values[i] == sigle[j]) trovato = 1; if (!trovato) { sigle[size_s] = values[i]; size_s++; retur size_s; 28 Lab7 28

Esercizio 9 - Soluzioe it mai(void) { it um, size_v, size_s, i, j, trovato; it values[dim], sigle[dim]; size_v = leggi(values, DIM); size_s = elimiaripetuti(values, size_v, sigle, DIM); for (i=0; i<size_s; i++) pritf("%d ", sigle[i]); retur 0; 29 Lab7 29