• Non ci sono risultati.

Fondamenti di Informatica: esercitazione di laboratorio n. 4 Stringhe e vettori multidimensionali Pier Luca Montessoro 1. Formati per la data

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica: esercitazione di laboratorio n. 4 Stringhe e vettori multidimensionali Pier Luca Montessoro 1. Formati per la data"

Copied!
1
0
0

Testo completo

(1)

Fondamenti di Informatica: esercitazione di laboratorio n. 4 Stringhe e vettori multidimensionali

Pier Luca Montessoro

1. Formati per la data

Si considerino i seguenti formati per la data:

formato 1: aaaa-mm-gg (esempi: 2006-2-14, 2000-1-1)

formato 2: gg mese dell’anno anno (esempio: 14 febbraio dell’anno 2006, 1 gennaio dell’anno 2000)

Si scriva la funzione void ConvertiData (char data1[], char data2[]) che riceva nella stringa data1 una data nel formato 1 e la trasformi nel formato 2 scrivendolo nella stringa data2.

Si svolga l’esercizio scrivendo una funzione che estragga la data dalla stringa di ingresso e la restituisca al programma chiamante in forma numerica e di una seconda funzione che scriva la data ricevuta in forma numerica in una stringa di uscita con il nuovo formato.

Per scrivere il risultato nella stringa di uscita si suggerisce di utilizzare la funzione sprintf che è identica alla printf con in più una stringa come primo argomento. La stampa non avviene sul monitor ma su tale stringa.

Esempio: sprintf (s, "%d + %d = %d", 1, 2, 3); scrive nella stringa s: "2 + 2 = 3".

Può anche essere utiile, per la prima funzione, l’utilizzo della funzione di libreria atoi che riceve una stringa rappresentante un numero intero decimale e ne restituisce il valore.

2. strncmp

La funzione int strncmp (char *s, char *t, int n) confronta le due stringhe s e t per una lunghezza massima n.

Si scriva la funzione mystrncmp, una versione semplificata di tale funzione che riceve gli stessi parametri di ingresso e restituisce 0 se i primi n caratteri delle due stringhe sono uguali e un valore diverso da 0 altrimenti.

3. strstr

La funzione char *strstr (char *s, char *t) cerca la prima occorrenza della stringa t nella stringa s.

Se la trova, restituisce l’indirizzo del primo carattere di s a cui inizia la stringa t, altrimenti restituisce il puntatore NULL.

Si scriva una funzione int mystrstr (char *s, char *t) che, facendo uso della funzione mystrncmp dell’esercizio precedente, si comporti in modo simile: restituisca l’indice della stringa s a cui si trova la prima occorrenza della stringa t, se questa è presente, e -1 se non è presente.

4. Battaglia navale

In un campo di battaglia di dimensioni NxN possono essere posizionate navi dei seguenti tipi:

 portaerei, lunga 5 caselle

 cacciatorpediniere, lungo 4 caselle;

 incrociatore, lungo 3 caselle;

 ricognitore, lungo 2 caselle.

Si scriva un programma che legga da tastiera una sequenza di navi (tipo, coordinate della estremità in alto a sinistra, direzione – orizzontale o verticale), memorizzi tali navi in un campo di battaglia rappresentato da una matrice di char e alla fine della sequenza stampi il campo di battaglia. Ogni nave nel campo di battaglia può essere rappresentata dall’iniziale del tipo (p per portaerei, c per cacciatorpediniere, ecc.).

Si valutino gli eventuali controlli che il programma dovrà effettuare sulla correttezza dei dati in ingresso

Riferimenti

Documenti correlati

Rispetto alla derivabilit` a si pu` o dire lo stesso eccetto per il fatto che il modulo non ` e derivabile dove si annulla il suo argomento... Il candidato deve consegnare questo

[r]

Determinare inoltre gli estremi superiore ed inferiore di f specificando se si tratta di massimo o minimo.

Determinare inoltre gli estremi superiore ed inferiore di f specificando se si tratta di massimo o minimo.

conta_divisibili (int quadrati[], int valori[], int n_valori, int contatori[]) che scrive in ciascun elemento del vettore contatori (anch’esso di dimensione N) quanti elementi

che scrive in ciascun elemento del vettore contatori (anch’esso di dimensione N) quanti elementi del vettore valori sono divisibili per il numero primo presente nella

conta_divisibili (int quadrati[], int valori[], int n_valori, int contatori[]) che scrive in ciascun elemento del vettore contatori (anch’esso di dimensione N) quanti elementi

[r]