RICERCA DI UN ELEMENTO



Documenti analoghi
Esempio: Array di struct

Gestione delle stringhe in C

Fondamenti di Informatica 2

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

Algoritmi di Ricerca. Esempi di programmi Java

Record in C: il costruttore struct.

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

Esame del 3 febbraio 2010

File di testo e file binari Directory

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

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

10 - Programmare con gli Array

Esercizio 1. Esercizio 1

Laboratorio di programmazione

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

Algoritmi di ordinamento

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

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

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

Lab 11 Gestione file di testo"

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

Funzioni in C. Violetta Lonati

Le stringhe. Le stringhe

Introduzione al Linguaggio C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

Esercitazione 7. Procedure e Funzioni

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

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

Appello di Informatica B

Gestione dei File in C

Esercitazione 3. Corso di Fondamenti di Informatica

Laboratorio di Fondamenti di Informatica anno accademico Esercizi proposti il

Introduzione alla programmazione in C

TOP DOWN. Compiti in classe proposti Modulo 1 JUVENILIA SCUOLA. Iacobelli Ajme Marrone

INFORMATICA - I puntatori Roberta Gerboni

Arduino: Programmazione

Esercizio 1. Esercizio 2

SOLUZIONE ESERCIZIO 1

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

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

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

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

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Corso di Fondamenti di Informatica

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

Lab 04 Istruzioni, cicli e array"

Compito di Fondamenti di Informatica

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

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

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

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

Breve riepilogo della puntata precedente:

Esercizio 1. Esercizi 5. Esercizio 3. Esercizio 2 CICLI

Informatica B

Esercizi di programmazione in C

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

Matlab: Strutture di Controllo. Informatica B

Alcune regole di base per scrivere un programma in linguaggio C

Caratteri e stringhe Esercizi risolti

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

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

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Esercitazione 10. Strutture ed Enumerazioni. Allocazione dinamica di memoria

MAGAZZINO.CPP January 2, 2008 Page 1

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

IEIM. Esercizio Gestione Automobili Strutture e Files Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.it

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

Liberare la memoria allocata dinamicamente.

Programmazione I / Informatica generale Prova scritta 11 Giugno 2008

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 13 File Binari

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

La struttura dati ad albero binario

Introduzione al linguaggio C Gli array

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

La selezione binaria

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

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

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

Linguaggio C - Stringhe

LISTE, INSIEMI, ALBERI E RICORSIONE

esercizi Esercizi / problemi

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

I puntatori e l allocazione dinamica di memoria

Database 1 biblioteca universitaria. Testo del quesito

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

Gestione dei File. dischi nastri cd

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

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

Matematica in laboratorio

Politecnico di Torino

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

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

Transcript:

RICERCA DI UN ELEMENTO Si legga da tastiera un array di N elementi (N stabilito dall utente) Si richieda un elemento x il programma deve cercare l elemento x nell array Se l elemento è presente, deve visualizzare la posizione in cui si trova l elemento

Primo livello di specifica Leggi N Leggi l array di N elementi Leggi x Per tutti gli elementi dell array (con indice i da 0 a N-1) Confronta x con l elemento di indice i. Se x è uguale all elemento i-esimo, visualizza i altrimenti continua la ricerca

ESEMPIO: Ricerca di un elemento #include <stdio.h> #define N 15 main () {int v,pos,n,i,a[n]; printf("inserisci N:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); printf ("Valore da cercare: "); scanf ("%d",&v); pos=0; while (pos<n && a[pos]!=v) pos++; if (pos==n) printf("non trovato\n"); else printf("trovato in pos %d",pos);

Ricerca con sentinella Nel ciclo di una ricerca dobbiamo inserire due condizioni: finché l array non è finito finché non ho trovato l elemento In alcuni casi si potrebbe, in alternativa, aggiungere l elemento da cercare alla fine dell array: in questo modo la condizione del ciclo risulta semplificata

#include <stdio.h> #define N 15 main () {int v,pos,n,i,a[n]; printf("inserisci N:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); printf ("Valore da cercare: "); Ricerca con sentinella Sentinella: inserisco il valore da cercare in fondo all array scanf ("%d",&v); a[n]=v; pos=0; while (a[pos]!=v) pos++; if (pos==n) printf("non trovato\n"); else printf("trovato in pos %d",pos); Nella condizione del while non ho più bisogno di controllare se sono arrivato in fondo

ORDINAMENTO DI UN VETTORE Dati n valori interi forniti in ordine qualunque, stampare in uscita l'elenco dei valori dati in ordine crescente. Vettore di elementi di un certo tipo, sul quale è definita una relazione d ordine totale (ad esempio, tipo float) Naive sort (o selection sort, o ordinamento per minimi successivi): Ad ogni passo seleziona il minimo nel vettore e lo pone nella prima posizione

Secondo livello di specifica per l ordinamento while (<il vettore ha più di una componente>) ESEMPIO: Ordinamento di un vettore { <individua il minimo nel vettore corrente in posizione posmin> <scambia se necessario il primo elemento del vettore corrente con quello in posizione posmin > <considera come vettore corrente quello precedente tolto il primo elemento>

Naive sort programmazione Top-Down main() { int v[n], n, i, posmin; // lettura di V, n for (i=0; i<n-1; i++) { /* cerca il minimo del vettore da i+1 a n: posmin */ if (v[posmin]<v[i]) // scambia v[posmin] e v[i] // stampa v

Naive sort programmazione Top-Down main() { int v[n], n, i, posmin; // lettura di V, n for (i=0; i<n-1; i++) { /* cerca il minimo del vettore da i+1 a n: posmin */ int j; posmin=i+1; for(j=i+2; j<n; j++) if (v[posmin]>v[j]) posmin=j; if (v[posmin]<v[i]) // scambia v[posmin] e v[i] // stampa v

Naive sort programmazione Top-Down main() { int v[n], n, i, posmin; // lettura di V, n for (i=0; i<n-1; i++) { /* cerca il minimo del vettore da i+1 a n: posmin */ int j; posmin=i+1; for(j=i+2; j<n; j++) if (v[posmin]>v[j]) posmin=j; if (v[posmin]<v[i]) { // scambia v[posmin] e v[i] int app; app=v[posmin]; v[posmin]=v[i]; v[i]=app; // stampa v

OSSERVAZIONI Naive Sort Si eseguono tutti i confronti anche se il vettore è già ordinato (esistono altri metodi più efficienti, li vedrete in altri corsi).

Esempio: Array di struct Scrivere un programma C che definisca la struttura esame composta dal nome dell esame (stringa) e dal voto (intero). Si leggano poi da terminale n esami, con n definito dall utente (max 30), e si inseriscano in un array. L utente inserisca poi il nome di un esame da cercare. Si utilizzi una ricerca con sentinella per trovare tale esame nell array (e lo si fornisca in uscita). Suggerimento 1: Non usate spazi nel nome dell esame. Suggerimento 2: Utilizzare le funzioni strcpy e strcmp contenute nella libreria string.h

Array di struct soluzione (1/2) #include <stdio.h> #include <string.h> #define NMAX 30 typedef struct { char nome[20]; int voto; esame; void main() { esame esamimarco[nmax]; char cerca[20]; int n, i, pos; printf("inserisci il numero di esami:"); scanf("\n%d", &n); //inserimento dati for (i=0; i<n; i++) { printf("\ninserisci il nome dell'esame:"); scanf("\n%s", esamimarco[i].nome); printf("inserisci il voto:"); scanf("\n%d", &esamimarco[i].voto); Continua...

Array di struct soluzione (2/2) printf("\ninserisci il nome dell'esame da cercare:"); scanf("\n%s", cerca); pos=0; //inizializzo contatore strcpy(esamimarco[n].nome, cerca); //sentinella (solo il //campo su cui si effettua la ricerca) //ricerca while(strcmp(esamimarco[pos].nome,cerca)) pos++; if (pos==n) { printf("\nesame non trovato.\n"); else { printf("\ntrovato in posizione %d.\n%s\t%d\n", pos+1, esamimarco[pos].nome, esamimarco[pos].voto);

ESERCIZI PROPOSTI Esercizio 1 - Struct Scrivere un programma C che definisca la struttura misurauk composta da quattro interi (miglia,yarde,piedi,pollici), e una struttura misuraue composta da tre interi (km,metri,mm). Si richieda poi una misura inglese e si stampi a video la misura europea. Ricordate che: 1 miglio = 1760 yarde 1 yarda = 3 piedi 1 piede = 12 pollici 1 pollice = 25,4 mm

ESERCIZI PROPOSTI Esercizio 2 - Struct Scrivere un programma C che definisca la struttura persona composta da nome, cognome, indirizzo, provincia e data di nascita. Si richiedano tutti i dati e si stampino a video.

ESERCIZI PROPOSTI Esercizio 3 - Array Si scriva un programma che richieda in ingresso un numero di elementi N (<20) e poi N interi, inserendoli in un array. Chieda poi una soglia S e si copino tutti gli elementi del vettore in altri due vettori, separando elementi sopra la soglia e sotto la soglia. Esercizio 4 - Array Si scriva un programma C che chieda in ingresso due matrici 3x3 e poi chieda all utente cosa vuole fare: somma, sottrazione o moltiplicazione. Si stampi a video la matrice risultato.

ESERCIZI PROPOSTI Esercizio 5 - Array Si scriva un programma che richieda in ingresso l andamento annuale del valore delle azioni (12 valori, uno per ogni mese) e crei un vettore. Poi stampi a video un istogramma orizzontale: 1 *********** 110 2 ********* 90 3 ************** 140 4 **************** 160 5 *************** 150... N.B. Visualizzare al massimo 50 stelle

ESERCIZI PROPOSTI Esercizio 6 - Array di struct Si realizzi un programma C che legga da utente i dati relativi ad alcuni corsi. In particolare, per ogni corso vengono dati: denominazione del corso: una stringa di 20 caratteri che riporta il nome del corso; cognome del docente: una stringa di 15 caratteri che rappresenta il cognome del docente del corso; iscritti: un intero che indica il numero di studenti che frequentano il corso. Il programma deve stampare la denominazione del corso e il cognome del docente relativi a tutti i corsi che hanno il numero di iscritti maggiore o uguale alla media aritmetica degli iscritti (calcolata su tutti i corsi).

ESERCIZI PROPOSTI Esercizio 7 - Array di struct Si scriva un programma C che legga una serie di dati e li memorizzi in un vettore SQUADRE (di dimensione 3) contenente strutture (struct squadra) del tipo: -nome squadra (stringa di lunghezza 20) -codice squadra (intero) -goal fatti (intero) -goal subiti (intero) Stampi a terminale tutti i nomi e codici delle squadre che hanno fatto un numero di goal maggiore del numero dei goal subiti. Letto a terminale un codice di una squadra stampi a video il nome della squadra, i goal fatti e i goal subiti.

Attenzione: abbiamo bisogno di un ARRAY di strutture!!!!! Esempio: l utente inserisce i seguenti dati per 3 squadre juventus 1 10 12 milan 2 7 6 inter 3 13 11 ESERCIZI PROPOSTI juventus 1 10 12 milan 2 7 6 inter 3 13 11 Viene stampato a video milan 2 inter 3 Se l utente digita 1 viene stampato juventus 10 12

ESERCIZI PROPOSTI Esercizio 8 Array di Struct Scrivere un programma C che crei una rubrica telefonica, usando una struct persona (nome, cognome, numero di telefono, e-mail). Il programma chiede di inserire delle nuove persone, poi si mette in modalità ricerca e, chiesto il nome stampa a video la scheda corrispondente.

ESERCIZI IN LABORATORIO Esercizio 1 - Struct Scrivere un programma C che definisca la struttura misurauk composta da quattro interi (miglia,yarde,piedi,pollici), e una struttura misuraue composta da tre interi (km,metri,mm). Si richieda poi una misura inglese e si stampi a video la misura europea. Esercizio 5 - Array Si scriva un programma che richieda in ingresso l andamento annuale del valore delle azioni (12 valori, uno per ogni mese) e crei un vettore. Poi stampi a video un istogramma orizzontale Esercizio 8 Array di Struct Scrivere un programma C che crei una rubrica telefonica, usando una struct persona (nome, cognome, numero di telefono, e-mail). Il programma chiede di inserire delle nuove persone, poi si mette in modalità ricerca e, chiesto il nome stampa a video la scheda corrispondente.