/* PROVA D'ESAME 02-02-2022 */ #include #include using namespace std; // STRUTTURE struct bottiglia{ char nome[21]; // nome stringa da 20 char + '\0' int anno; // annata bool libera; // se la posizione รจ libera }; struct Cantina{ int N; // numero scaffali int M; // numero massimo bottiglie per scaffale bottiglia* mat; // contenuto cantina }; // UTILITY struct elem{ char vino[21]; elem* pun; }; bool trovato(elem* testa, char* s){ for(elem* p=testa; p!=NULL; p=p->pun){ if(strcmp(p->vino, s)==0){ return true; } } return false; } // FUNZIONI TESTO A void inizializzaCantina(Cantina& c, int a, int b){ if(a<1){ a=1; } if(b<1){ b=1; } c.N = a; c.M = b; c.mat = new bottiglia[c.N*c.M]; for(int i=0; i20)){return false;} bool trovato = false; int conta; int scaffale; for(int i=0; (i=k){ trovato = true; scaffale = i; } } if(!trovato){ return false; } conta = 0; for(int i = 0; (ivino, c.mat[i*c.M+j].nome); lista->pun = q; } } } return lista; } void StampaCantina(Cantina& c, int j){ if((j>0) && (j<=c.N)) { j--; // gli scaffali partono da 1 for (int i = 0; i < c.M; i++) { if (!c.mat[j * c.M + i].libera) { cout << "<" << c.mat[j * c.M + i].nome << ", " << c.mat[j * c.M + i].anno << "> "; } } } cout << endl; }