• Non ci sono risultati.

Nota di Copyright

N/A
N/A
Protected

Academic year: 2021

Condividi "Nota di Copyright"

Copied!
6
0
0

Testo completo

(1)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO

Facoltà di Ingegneria Università degli Studi di Udine

Linguaggio C Esercizi su vettori e stringhe

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2 Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.

Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.

Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte dell’autore.

L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).

In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali.

Nota di Copyright

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3

Vettori e stringhe

• Si dichiarino le variabili necessarie a memorizzare i seguenti dati:

3.2, -7.9, 1e300 100, -10000, 1, -1

“ciao mondo”

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4

Sequenza invertita

Si scriva un programma che legga da tastiera una sequenza di numeri naturali e la stampi in ordine inverso ripetto a quello di inserimento.

La sequenza di numeri abbia lunghezza massima 100 e sia terminata da -1.

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5

Sequenza ordinata

Si scriva un programma che legga da tastiera una sequenza di numeri naturali e la stampi in ordine crescente.

La sequenza di numeri abbia lunghezza massima 100 e sia terminata da -1.

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 6

Istogramma orizzontale Si scriva un programma che legga da tastiera una sequenza di numeri interi di valore compreso tra 0 e 99 e stampi (in orizzontale) l’istogramma che rappresenta il numero di volte che ciascun numero è stato inserito (solo se inserito almeno una volta).

La sequenza di numeri sia terminata

da -1.

(2)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7

Istogramma orizzontale

• Esempio:

C:\PROGRAMMI> isto_or

inserire un numero (0 <= N <= 99): 8 inserire un numero (0 <= N <= 99): 5 inserire un numero (0 <= N <= 99): 73 inserire un numero (0 <= N <= 99): 8 inserire un numero (0 <= N <= 99): 73 inserire un numero (0 <= N <= 99): 73 inserire un numero (0 <= N <= 99): -1 5 *

8 **

73 ***

C:\PROGRAMMI>

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8

Istogramma verticale Si scriva un programma che legga da tastiera una sequenza di numeri interi di valore compreso tra 0 e 20 e stampi (in verticale) l’istogramma che

rappresenta il numero di volte che ciascun numero è stato inserito (solo se inserito almeno una volta).

La sequenza di numeri sia terminata da -1.

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9

Istogramma verticale

• Esempio:

C:\PROGRAMMI> isto_vert

inserire un numero (0 <= N <= 20): 11 inserire un numero (0 <= N <= 20): 3 inserire un numero (0 <= N <= 20): 3 inserire un numero (0 <= N <= 20): 11 inserire un numero (0 <= N <= 20): 8 inserire un numero (0 <= N <= 20): 3 inserire un numero (0 <= N <= 20): -1

*

* *

* * * 1 2 3 4 5 6 7 8 9 10 11 12 ...

C:\PROGRAMMI>

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10

Istogramma verticale (testo ASCII) Si scriva un programma che legga da tastiera un testo e stampi (in verticale) l’istogramma che rappresenta il numero di volte che ciascuna lettera è comparsa nel testo.

Il testo sia terminato da CONTROL-D (EOF).

NOTA: in alcuni ambienti EOF è associato a CONTROL-Z

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11

Istogramma verticale

• Esempio:

C:\PROGRAMMI> isto_testo testo di prova

altra riga ultima riga

*

*

* * * *

* * * *

* * * * * * *

* ** * * ** ** *****

abcdefghijklmnopqrstuvwxyz C:\PROGRAMMI>

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12

Fusione di vettori

Si scriva un programma che legga da tastiera due sequenza di numeri naturali terminate da -1 e stampi l’insieme di tutti i numeri inseriti in ordine crescente.

NOTA: si utilizzino due vettori per le due sequenze di ingresso, la funzione di ordinamento già scritta in precedenza per ordinarli e una nuova funzione

fondi_vettori_ordinati per fonderli un

un unico vettore

(3)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 13

Matrice riempita a spirale Si scriva un programma in C per riempire una matrice N x N a spirale, con valori crescenti da 0 a N 2 -1 iniziando dall'angolo superiore sinistro.

Nota: si definisca una matrice di dimensione massima (es. 10x10), e si legga da tastiera la dimensione della sottomatrice da considerare.

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14

Esempi

C:\PROGRAMMI> spirale

dimensione della matrice (quadrata max 10x10): 1 0

C:\PROGRAMMI> spirale

dimensione della matrice (quadrata max 10x10): 2 0 1

3 2

C:\PROGRAMMI> spirale

dimensione della matrice (quadrata max 10x10): 3 0 1 2

7 8 3 6 5 4

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15

Esempi

C:\PROGRAMMI> spirale

dimensione della matrice (quadrata max 10x10): 4 0 1 2 3

11 12 13 4 10 15 14 5 9 8 7 6 C:\PROGRAMMI> spirale

dimensione della matrice (quadrata max 10x10): 5 0 1 2 3 4

15 16 17 18 5 14 23 24 19 6 13 22 21 20 7 12 11 10 9 8

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16

Ruota matrice

Si scriva la funzione ruota_matrice che ruota di 90 0 il contenuto della matrice quadrata passata come argomento.

Si scriva un main per provarla, utilizzando la funzione riempi_a_spirale, già scritta in precedenza.

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 17

Ruota matrice

C:\PROGRAMMI> ruota_matrice

dimensione della matrice (quadrata max 10x10): 3

0 1 2 7 8 3 6 5 4

6 7 0 5 8 1 4 3 2 C:\PROGRAMMI>

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 18

Reverse

Scrivere una funzione in linguaggio C che accetti in ingresso una stringa contenente una frase (parole separate soltanto da spazi) e inverta l’ordine delle lettere di ogni singola parola.

Esempio:

stringa di esempio

→ agnirts id oipmese

(4)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 19

Nomi

Si consideri la rappresentazione di nomi e cognomi mediante una stringa nel seguente formato: "cognome, nome” (sia il nome che il cognome possono essere composti da più parole).

Si scriva la funzione

void nome_abbreviato (char s[], char t[])

che riceve in ingresso una stringa s in tale formato e scrive in t il formato abbreviato: "n. cognome”.

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 20

Nomi

Esempio:

Della Valle Di Sotto, Pier Luigi

→ P. L. Della Valle Di Sotto

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 21

String copy Si scriva la funzione

void strcopy (char t[], char s[])

che copia la stringa s nella stringa t.

Esempio:

s = “testo”

→ t = “testo”

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 22

String catenate Si scriva la funzione

void strcatenate (char t[], char s[])

che inserisce la stringa s alla fine della stringa t.

Esempio:

s = “mondo!”, t = “ciao ”

→ t = “ciao mondo!”

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 23

String insert

Si scriva la funzione

void strinsert (char t[], char s[])

che inserisce la stringa s all’inizio della stringa t.

Esempio:

s = “ciao ”, t = “mondo!”

→ t = “ciao mondo!”

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 24

String compare

Si scriva la funzione

int strcompare (char a[], char b[])

che confronta la stringa a e la stringa b e restituisce:

-1 se la stringa a precede, in ordine alfabetico, la stringa b

0 se la stringa a è uguale alla stringa b

1 se la stringa a segue, in ordine

alfabetico, la stringa b

(5)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 25

String compare recursiva

Si scriva la funzione ricorsiva

int recursive_strcmp (char a[], char b[])

che confronta la stringa a e la stringa b e restituisce:

1 se le due stringhe sono uguali 0 se le due stringhe sono differenti

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 26

String compare recursiva

Ai fini della definizione dell’algoritmo recursivo, si consideri che se il primo carattere della prima stringa è diverso dal primo carattere della seconda stringa, la funzione deve restituire 0, se le due stringhe sono terminate la funzione deve restituire 1 e se non sono ancora terminate la funzione deve essere richiamata ricorsivamente per operare sulle due sottostringhe che si ottengono partendo dal secondo carattere di ciascuna

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 27

Stringa palindroma

Si scriva una funzione per verificare se la stringa passata come argomento è palindroma

C:\PROGRAMMI> palindroma pippo

non e` palindroma C:\PROGRAMMI> palindroma radar

e` palindroma

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 28

Stringa palindroma (II)

Si scriva una funzione per verificare se la stringa passata come argomento è palindroma, senza considerare gli eventuali spazi

C:\PROGRAMMI> palindroma

o mordo tua nuora o aro un autodromo e` palindroma

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 29

Complemento a 2

• Si scriva un programma che legga da tastiera una stringa di caratteri che rappresenta un numero binario e ne stampi il complemento a 2

C:\PROGRAMMI> ca2

inserire il numero in binario: 1111 0001

Fondamenti di Informatica - Esercitazioni

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 30

String reverse recursiva

• Si scriva una funzione che inverta il

contenuto di una stringa mediante

tecnica recursiva

(6)

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 31

Cruciverba

• Si scriva un programma che crei un cruciverba (matrice di char inizializzata con costanti), legga una stringa da tastiera e la cerchi nel cruciverba, sia in orizzontale che in verticale.

© 2001 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 32

Esempi

C:\PROGRAMMI> cruci

SUGLI ODIATI TIRI N TRI CD IE POI L MELA EDISON CAINO

stringa da cercare: INDIANO trovata

C:\PROGRAMMI> cruci

SUGLI ODIATI TIRI N TRI CD IE POI L MELA EDISON CAINO

stringa da cercare: PIPPO

non trovata

Riferimenti

Documenti correlati

Ascoltare e comprendere semplici parole, espressioni augurali, canzoni e filastrocche relative alle principali festività anglosassoni.. Percepire il ritmo e l’intonazione come

Si costruisce il sistema a due equazioni in due incognite “ϕ” e “∆”, imponendo l’equilibrio delle forze agenti sul nodo “2” di cui sono appunto incogniti gli

– Resistenza giunto antisfilamento alla trazione – Minimo raggio di curvatura ammissibile dal giunto – Stima del foro utile alla gestione del tubo segmentato – Resistenza

Rende possibile la riduzione delle attrezzature in cantiere: non essendoci scavi a cielo aperto, il numero dei mezzi in lavoro si riduce notevolmente.. Anche l’area di cantiere

PER ADDIZIONE ALGEBRICA ( O SOMMA ALGEBRICA) SI INTENDE L’OPERAZIONE CHE PRENDE IN CONSIDERAZIONE SIA LA SOMMA CHE LA DIFFERENZA. NB: OGNI NUMERO INTERO PUO’ ESSERE

[r]

[r]

• Si scriva un programma che cerchi un valore dato in una sequenza di numeri inseriti da tastiera (si assuma che il primo numero rappresenti la lunghezza della sequenza) e