Advertisement
buonaseva_fatelo

esercizio_per_matedì

Feb 26th, 2024
951
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.98 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5.  
  6. /*
  7. Scrivere un programma in C/C++ che visualizzi il seguente menu:
  8.  
  9. 1) Crea rubrica
  10. 2) Cerca un elemento
  11. 3) Visualizza la tabella
  12. 4) Esci
  13.  
  14. 1) La rubrica (array di struct) deve contenere al massimo 100 elementi. Ogni elemento è
  15. composto dai seguenti campi
  16.  nome
  17.  cognome
  18.  indirizzo
  19.  città di residenza
  20.  telefono
  21. Tutti i suddetti campi devono essere rappresentati come stringhe.
  22. Dopo avere inserito un elemento il programma chiede: “Vuoi continuare s/n”?
  23. Se la risposta è “s” si aggiunge un nuovo elemento, se è “n” si torna al menu.
  24.  
  25. 2) Visualizza un sottomenu che chiede per quale campo si vuole cercare:
  26.  
  27. 1. nome
  28. 2. cognome
  29. 3. indirizzo
  30. 4. città di residenza
  31. 5. telefono
  32. 6. Torna al menu precedente
  33.  
  34. Si fa inserire il valore del campo che si è scelto per la ricerca
  35. Si cerca nella tabella tutti gli elementi in cui appare quel campo.
  36. Es. se ho scelto come campo di ricerca “città di residenza” e ho inserito come valore di
  37. ricerca “Torino” bisogna mostrare tutti gli elementi che hanno il valore “Torino”.
  38. Se non si trova nessun elemento con quel valore bisogna visualizzare il messaggio:
  39. “Non trovato nessun elemento”.
  40.  
  41. 3) Si visualizza tutta la tabella
  42. */
  43.  
  44. const int N = 20;
  45. int g_inseriti;
  46. struct Contatto{
  47.     char nome[N];
  48.     char cognome[N];
  49.     char indirizzo[N];
  50.     char residenza[N];
  51.     int numero;
  52. };
  53.  
  54. void inserisciNumero(Contatto* param1){
  55.     char nome[N], cognome[N], indirizzo[N], residenza[N];
  56.     int numero;
  57.     cout << "Nome";
  58.     cin >> nome;
  59.     cout << "cognome";
  60.     cin >> cognome;
  61.     cout << "\nindirizzo";
  62.     cin >> indirizzo;
  63.     cout << "\nresidenza";
  64.     cin >> residenza;
  65.     cout << "numero";
  66.     cin >> numero;
  67.  
  68.     strcpy(param1[g_inseriti].nome, nome);
  69.     strcpy(param1[g_inseriti].cognome, cognome);
  70.     strcpy(param1[g_inseriti].indirizzo, indirizzo);
  71.     strcpy(param1[g_inseriti].residenza, residenza);
  72.     param1[g_inseriti].numero = numero;
  73.     g_inseriti = g_inseriti + 1;
  74. }
  75.  
  76.  
  77.  
  78. void cercaElemento(Contatto* parametro_contatti) {
  79.     int input;
  80.     char parolaChiave[N];
  81.     char* inizioSottostringa;
  82.     bool trovato = false;
  83.     cout << "Scegliere per quale campo cercare (numero 1-6)"
  84.             "1. nome\n"
  85.             "2. cognome\n"
  86.             "3. indirizzo\n"
  87.             "4. città di residenza\n"
  88.             "5. telefono\n"
  89.             "6. Torna al menu precedente";
  90.     cin >> input;
  91.     cout << "\nInserire parola chiave:";
  92.     cin >> parolaChiave;
  93.     for(int i = 0; i< g_inseriti; i = i+1){
  94.         switch(input){
  95.             case 1:
  96.                 //cercare per nome
  97.                 inizioSottostringa = strstr(parametro_contatti[i].nome, parolaChiave);
  98.                 break;
  99.             case 2:
  100.                 //cercare per cognome
  101.                 inizioSottostringa = strstr(parametro_contatti[i].cognome, parolaChiave);
  102.  
  103.                 break;
  104.             case 3:
  105.                 //cercare per indirizzo
  106.                 inizioSottostringa = strstr(parametro_contatti[i].indirizzo, parolaChiave);
  107.  
  108.                 break;
  109.             case 4:
  110.                 //cercare per città di residenza
  111.                 inizioSottostringa = strstr(parametro_contatti[i].residenza, parolaChiave);
  112.  
  113.             case 5:
  114.                 //cercare per numero di telefono
  115.  
  116.             case 6:
  117.                 break;
  118.             default:
  119.                 cout << "Scelta errata";
  120.         }
  121.         if(inizioSottostringa != NULL){
  122.             trovato = true;
  123.             cout << "\ntrovata corrispondenza:";
  124.             cout << parametro_contatti[i].nome << endl;
  125.             cout << parametro_contatti[i].cognome << endl;
  126.             cout << parametro_contatti[i].indirizzo << endl;
  127.             cout << parametro_contatti[i].residenza << endl;
  128.             cout << parametro_contatti[i].numero << endl;
  129.         }
  130.     }//TI VEDO CHE SCRIVI e vai a mangiare lol dio por
  131.     if(trovato == false)
  132.         cout << "Non trovato nessun elemento";
  133. }
  134.  
  135. void visualizzaTabella(Contatto* contatti){
  136.     for(int i = 0; i<g_inseriti;i=i+1){
  137.         cout << contatti[i].nome << endl;
  138.         cout << contatti[i].cognome << endl;
  139.         cout << contatti[i].indirizzo << endl;
  140.         cout << contatti[i].residenza << endl;
  141.         cout << contatti[i].numero << endl;
  142.     }
  143. }
  144.  
  145.  
  146. int main(){
  147.     int input;
  148.     g_inseriti = 0;
  149.     Contatto rubrica[100];
  150.  
  151.     cout <<"Inserire un numero:\n"
  152.            "1) Crea rubrica\n"
  153.         "2) Cerca un elemento\n"
  154.         "3) Visualizza la tabella\n"
  155.         "4) Esci\n";
  156.     cin >> input;
  157.  
  158.     switch(input){
  159.         case 1:
  160.             inserisciNumero(rubrica);
  161.             break;
  162.         case 2:
  163.             cercaElemento(rubrica);
  164.             break;
  165.         case 3:
  166.             visualizzaTabella(rubrica);
  167.             break;
  168.         case 4:
  169.             break;
  170.         default:
  171.             cout << "Scelta errata\n";
  172.     }
  173.  
  174.  
  175.     return 0;
  176. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement