Laboratorio di Programmazione. AA 2004/05.
Esercitazione n. 9
Scopo di questa esercitazione è di familiarizzarsi con la
lettura di stringhe mediante scanf, con le strutture e con le
operazioni di lettura e scrittura, definizione e
manipolazione
di liste concatenate.
Al solito, si suggerisce di creare una directory apposita per i
files relativi a questa esercitazione.
Ricordare inoltre che i prototipi delle function di libreria per
operare sulle strighe risiedono nel file di header string.h.
- Leggera una stringa lunga meno di 20 caratteri da stdin
mediante scanf("%s",buf) assegnandola ad un array di
caratteri dichiarato come char buf[20]; e far scrivere la
lunghezza
effettiva della stringa (calcolabile come strlen(buf)+1) oltre
alla
stringa stessa. Immettere in input una stringa di lunghezza maggiore di
20
caratteri. Cosa succede ?
Modificare il convertitore di formato in "%20s" e riprovare a
dare un input piu' lungo di 20 caratteri.
- Se la stringa in input nel precedente esercizio contiene spazi,
con il convertitore di formato %s si legge solo a partire dal primo
carattere diverso da spazio fino a (ed escluso) il prossimo spazio
(o newline). Per leggere una stringa che contenga spazi occorre
il seguente converitore di formato: "%[^\n]" (legge dall' inizio della
riga di input fino al carattere di newline).
Provare nel precedente programma (anche nella versione "%20[^\n]") e
verificarne il funzionamento.
- Definire un tipo dati "punto2D" mediante una struttura
contenente
due campi float per le coordinate x e y. Definire un secondo tipo dati
"segmento2D" come struttura i cui due campi sono di tipo "punto2D".
Definire infine una function che torni un float e di argomento
"puntatore a segmento2D" che calcoli la lunghezza del segmento
secondo la formula: lunghezza = radice quadrata della somma delle
differenze delle cordinate x e y dei due punti estremi dei segmenti.
Usarla per calcolare la lunghezza del segmento di estremi (-1,2) e
(3,5).
- Data una struttura dati cosi' definita:
struct scheda
{ char *autore;
char *titolo;
int anno;
};
ed un puntatore a struct scheda (di nome ps), allocare
dinamicamente memoria per ps
e
assegnare ai campi i valori "Dennis Ritchie" (autore), "Il mio primo
programma C" (titolo), 1972 (anno). Scrivere quindi i valori dei 3
campi
su schermo.
- Il file linklist.c
presenta un esempio di
definizione,
manipolazione ed utilizzo di una lista concatenata.
Esaminare l' implementazione, compilare il programma e provare ad
utilizzarlo.