Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.23 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. struct Abitante {
  6.     char nome[255];
  7.     char cognome[255];
  8.     char dataNascita[10];
  9. };
  10.  
  11. bool estraiDataNascita(char data[]) {
  12.     if (strlen(data) != 10) return false;
  13.     for (int i = 0; data[i] != '\0'; i++) {
  14.         if ((data[i]<'0' || data[i] >'9') && data[i] != '/' ) return false;
  15.     }
  16.     if (data[2] != '/' || data[5] != '/') { // 27/07/1999
  17.         return false;
  18.     }
  19.     return true;
  20. }
  21.  
  22. bool estraiNomeCognome(char nominativo[]) {
  23.     bool trovato;
  24.     if (strlen(nominativo) == 0 || strlen(nominativo) > 255) return false;
  25.     for (int i = 0; nominativo[i] != '\0'; i++) {
  26.         if (nominativo[i] != ';' && (nominativo[i] <'a' || nominativo[i] > 'z')) return false;
  27.         if (nominativo[i] == ';') {
  28.             trovato = true;
  29.             break;
  30.         }
  31.     }
  32.     if (!trovato) return false;
  33.     return true;
  34. }
  35.  
  36. void input(Abitante comune[], int &riemp) {
  37.     char nominativo[255];
  38.     char dataDiNascita[255];
  39.     char risposta = '0';
  40.     int i = 0;
  41.     for (riemp = 0; riemp < 1000; riemp++) {
  42.         do {
  43.             cout << "\nInserisci nome e cognome separati da ; (Ad esempio Leonardo;da,Vinci): ";
  44.             cin >> nominativo;
  45.             if (!estraiNomeCognome(nominativo)) {
  46.                 cout << "\nNome non valido, riprova!";
  47.             }
  48.             else break;
  49.         } while (1);
  50.         do {
  51.             cout << "\nInserisci la data di nascita, ad esempio 15/04/1452: ";
  52.             cin >> dataDiNascita;
  53.             if (!estraiDataNascita(dataDiNascita)) {
  54.                 cout << "\nNome non valido, riprova!";
  55.             }
  56.             else break;
  57.         } while (1);
  58.         for (i = 0; nominativo[i] != ';'; i++) {
  59.             comune[riemp].nome[i] = nominativo[i];
  60.         }
  61.         i++;
  62.         for (int j = 0; nominativo[i] != '\0'; j++) {
  63.             comune[riemp].cognome[j] = nominativo[i];
  64.             i++;
  65.         }
  66.         strcpy(comune[riemp].dataNascita, dataDiNascita);
  67.         cout << "\nAltri abitanti? s/n: ";
  68.         cin >> risposta;
  69.         if (risposta != 's') break;
  70.     }
  71. }
  72.  
  73. void visualizza(Abitante comune[], int riemp) {
  74.     for (int i = 0; i < riemp; i++) {
  75.         cout << "\nAbitante numero #" << i;
  76.         cout << "\nNome abitante: " << comune[i].nome;
  77.         cout << "\nCognome abitante: " << comune[i].cognome;
  78.         cout << "\nData di nascita abitante: " << comune[i].dataNascita;
  79.     }
  80. }
  81.  
  82. int main()
  83. {
  84.     struct Abitante comune[1000];
  85.     int riemp = 0;
  86.    
  87.     input(comune, riemp);
  88.     visualizza(comune, riemp);
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement