Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoNazario Lorenzi Modificato 10 anni fa
1
Piero Scotto - C141 C14 #09 Gestione stringhe: esercizio. Switch case. Variabili logiche
2
Finalità del corso Piero Scotto - C142
3
3 Problema. Ricavare dal codice fiscale la data di nascita e il sesso. Vediamo di procedere passo passo per la soluzione del problema. Inizialmente passiamo il codice fiscale via input. Ci sarebbero da fare diversi controlli sulla correttezza: limitiamoci a quello sulla lunghezza.
4
Piero Scotto - C144 #define MAXSTR 16 /* definisco la lunghezza del codice fiscale */ int main() { char codice[MAXSTR]; /* vettore codice fiscale */ short corretto = 0; /* variabile logica 0=FALSO */ do { printf("Scrivere il codice fiscale "); gets(codice); /* funzione con cui prendo il codice */ if (strlen(codice)!=MAXSTR) printf("Codice errato"); else corretto=1; } while (!corretto); printf("Il codice è corretto: %s ", codice);
5
Piero Scotto - C145 … gets(codice); /* da qui inizio a lavorare sul codice */ Definisco nuove variabili: giorno, mese, anno sono ancora caratteri o stringhe, mentre day, month, year sono i corrispondenti valori numerici. Sia in codice che in tutte le altre stringhe si inizia a contare da 0 giorno[0]=codice[9]; giorno[1]=codice[10]; Giorno contiene due caratteri: char giorno[2]; day=atoi(giorno); /* day e' il numero riferito a giorno: uso la funzione atoi alphanum to integer */
6
Piero Scotto - C146 Analogamente per lanno: anno[0]=codice[6]; anno[1]= codice[7]; year=atoi(anno); /* year e' il numero riferito all'anno */ mese=codice[8]; /* mese invece e' una lettera */
7
Piero Scotto - C147 Nel Codice fiscale linformazione sul sesso è inserita nel giorno di nascita (posizioni 10-11 nella stringa codice) ES. NPLLNZ98D23L219S Il 23 è il giorno di nascita e si tratta di un uomo Invece NPLSRA98D63L219F il 63 è il giorno di nascita – dobbiamo togliere 40 – e si tratta di una donna. if (day > 40) sex=0; else sex=1; /* stabilisco il sesso */ if (sex==0) day=day-40; /* stabilisco il giorno anche per le femmine */ if (sex==0) printf("Persona di sesso femminile. "); else printf("Persona di sesso maschile. ");
8
Piero Scotto - C148 Ora resta da trattare il mese. Nel codice fiscale è una lettera secondo una ben precisa codifica. La troviamo alla posizione 9.
9
Piero Scotto - C149 Per tradurre la lettera in numero dobbiamo considerare 12 casi. Potremmo utilizzare una serie di if, eventualmente annidati, ma esiste una istruzione più semplice molto adatta alla trattazione di numerosi casi diversi. Listruzione si chiama: switch – case
10
Piero Scotto - C1410
11
Piero Scotto - C1411
12
Piero Scotto - C1412
13
Piero Scotto - C1413
14
Piero Scotto - C1414
15
Piero Scotto - C1415
16
Piero Scotto - C1416
17
Piero Scotto - C1417 switch (mese) { case 'A': month=1; break; case 'B': month=2; break; case 'C': month=3; break; case 'D': month=4; break; case 'E': month=5; break; case 'H': month=6; break; case 'L': month=7; break; case 'M': month=8; break; case 'P': month=9; break; case 'R': month=10; break; case 'S': month=11; break; case 'T': month=12; break; default: month=0; break; /* in tutte le altre situazioni */ }
18
Piero Scotto - C1418 #include #include /* per le funzioni sulle stringhe */ #define MAXSTR 16 int main() { char codice[MAXSTR], giorno[2], mese, anno[2]; short corretto = 0, sex, day, month=0, year; do { printf("Scrivere il codice fiscale "); gets(codice); if (strlen(codice)!=MAXSTR) printf("Codice errato"); else corretto=1; } while (!corretto); printf("Il codice è corretto: %s ", codice); giorno[0]=codice[9]; giorno[1]=codice[10]; /* giorno: 2 caratteri */ day=atoi(giorno); /* day e' il numero riferito a giorno */ mese=codice[8]; /* mese */ anno[0]=codice[6]; anno[1]= codice[7]; year=atoi(anno); /* year e' il numero riferito all'anno */ if (day > 40) sex=0; else sex=1; /* stabilisco il sesso */ if (sex==0) day=day-40; /* stabilisco il giorno anche per le femmine */ if (sex==0) printf("Persona di sesso femminile. "); else printf("Persona di sesso maschile. ");
19
Piero Scotto - C1419 switch (mese) { case 'A': month=1; break; case 'B': month=2; break; case 'C': month=3; break; case 'D': month=4; break; case 'E': month=5; break; case 'H': month=6; break; case 'L': month=7; break; case 'M': month=8; break; case 'P': month=9; break; case 'R': month=10; break; case 'S': month=11; break; case 'T': month=12; break; default: month=0; break; } printf("La data di nascita e' %d-%d-%d ", day,month,year); getchar(); /* per tenere attiva la console e non farla sparire */ return 0; }
20
Piero Scotto - C1420
21
Piero Scotto - C1421
22
Piero Scotto - C1422
23
Piero Scotto - C1423
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.