Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- struct Abitante {
- char nome[255];
- char cognome[255];
- char dataNascita[10];
- };
- bool estraiDataNascita(char data[]) {
- if (strlen(data) != 10) return false;
- for (int i = 0; data[i] != '\0'; i++) {
- if ((data[i]<'0' || data[i] >'9') && data[i] != '/' ) return false;
- }
- if (data[2] != '/' || data[5] != '/') { // 27/07/1999
- return false;
- }
- return true;
- }
- bool estraiNomeCognome(char nominativo[]) {
- bool trovato;
- if (strlen(nominativo) == 0 || strlen(nominativo) > 255) return false;
- for (int i = 0; nominativo[i] != '\0'; i++) {
- if (nominativo[i] != ';' && (nominativo[i] <'a' || nominativo[i] > 'z')) return false;
- if (nominativo[i] == ';') {
- trovato = true;
- break;
- }
- }
- if (!trovato) return false;
- return true;
- }
- void input(Abitante comune[], int &riemp) {
- char nominativo[255];
- char dataDiNascita[255];
- char risposta = '0';
- int i = 0;
- for (riemp = 0; riemp < 1000; riemp++) {
- do {
- cout << "\nInserisci nome e cognome separati da ; (Ad esempio Leonardo;da,Vinci): ";
- cin >> nominativo;
- if (!estraiNomeCognome(nominativo)) {
- cout << "\nNome non valido, riprova!";
- }
- else break;
- } while (1);
- do {
- cout << "\nInserisci la data di nascita, ad esempio 15/04/1452: ";
- cin >> dataDiNascita;
- if (!estraiDataNascita(dataDiNascita)) {
- cout << "\nNome non valido, riprova!";
- }
- else break;
- } while (1);
- for (i = 0; nominativo[i] != ';'; i++) {
- comune[riemp].nome[i] = nominativo[i];
- }
- i++;
- for (int j = 0; nominativo[i] != '\0'; j++) {
- comune[riemp].cognome[j] = nominativo[i];
- i++;
- }
- strcpy(comune[riemp].dataNascita, dataDiNascita);
- cout << "\nAltri abitanti? s/n: ";
- cin >> risposta;
- if (risposta != 's') break;
- }
- }
- void visualizza(Abitante comune[], int riemp) {
- for (int i = 0; i < riemp; i++) {
- cout << "\nAbitante numero #" << i;
- cout << "\nNome abitante: " << comune[i].nome;
- cout << "\nCognome abitante: " << comune[i].cognome;
- cout << "\nData di nascita abitante: " << comune[i].dataNascita;
- }
- }
- int main()
- {
- struct Abitante comune[1000];
- int riemp = 0;
- input(comune, riemp);
- visualizza(comune, riemp);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement