SHARE
TWEET

Untitled

a guest Jan 15th, 2020 60 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <cstring>
  3. #include <fstream>
  4. using namespace std;
  5.  
  6. struct squadra{
  7.     int punteggio;
  8.     char nome[31];
  9.     squadra*next;
  10. };
  11.  
  12. struct classifica{
  13.     squadra*testa;
  14. };
  15.  
  16. void inizializza(classifica&c){
  17.     c.testa=0;
  18. }
  19.  
  20. void inserisciordinato(classifica&c, const char* id, int i){
  21.     if(id==0||strlen(id)>30) return;
  22.     squadra*p=0;
  23.     squadra*q;
  24.     for(q=c.testa;q!=0 && (q->punteggio)>i;q=q->next){
  25.         if(strcmp(q->nome,id)==0) return;
  26.         p=q;
  27.     }
  28.     squadra*r=new squadra;
  29.     r->punteggio=i;
  30.     r->next=q;
  31.     if(q==c.testa)
  32.         c.testa=r;
  33.     else
  34.         p->next=r;
  35. }
  36.  
  37.  
  38.  
  39. void aggiungi(classifica& cla, const char*str){
  40.     ifstream in(str);
  41.     if(!in)
  42.         cerr<<"errore apertura file"<<endl;
  43.     char e[30];
  44.     while(cin>>e){
  45.         if(strlen(e)>30) return;
  46.         for(squadra*q=cla.testa;q!=0;q=q->next) {
  47.             inserisciordinato(cla, e, 0);
  48.         }
  49.     }
  50.     in.close();
  51. }
  52.  
  53. int elimina(classifica&c, const char*id){
  54.     if(id==0||strlen(id)>30) return 0;
  55.     squadra*p=0;
  56.     squadra*q;
  57.     for(q=c.testa;q!=0 && q->nome!=id;q=q->next){
  58.         p=q;
  59.     }
  60.     if(q==0) return 0;
  61.     if(q==c.testa)
  62.         c.testa=q->next;
  63.     else
  64.         p->next=q->next;
  65.     int punti =q->punteggio;
  66.     delete q;
  67.     return punti;
  68. }
  69.  
  70. void risultato(classifica&c, const char*sq1, int ris1, const char*sq2, int ris2){
  71.     if(c.testa==0|| sq1==0||strlen(sq1)>30|| sq2==0|| strlen(sq2)>30) return;
  72.     if(ris1!=0 && ris1!=1 && ris1!=3) return;
  73.     if(ris2!=0 && ris2!=1 && ris2!=3) return;
  74.     bool trovata1;
  75.     for(squadra*q=c.testa;q!=0;q=q->next){
  76.         if(strcmp(q->nome, sq1)==0)
  77.             trovata1=true;
  78.     }
  79.     if(!trovata1) return;
  80.     bool trovata2;
  81.     for(squadra*q=c.testa;q!=0;q=q->next){
  82.         if(strcmp(q->nome, sq2)==0)
  83.             trovata2=true;
  84.     }
  85.     if(!trovata2) return;
  86.  
  87.     int punti1=elimina(c,sq1);
  88.     int punti2=elimina(c, sq2);
  89.  
  90.     punti1+=ris1;
  91.     punti2+=ris2;
  92.     inserisciordinato(c,sq1, punti1);
  93.     inserisciordinato(c, sq2, punti2);
  94. }
  95.  
  96. void stampa(classifica c){
  97.     cout<<"Classifica:"<<endl;
  98.     int i=0;
  99.     while(i<3){
  100.         for(squadra*q=c.testa;q!=0;q=q->next){
  101.             cout<<q->nome<<","<<q->punteggio<<endl;
  102.             if(q->punteggio!=(q->next)->punteggio)
  103.                 i++;
  104.         }
  105.     }
  106. }
  107.  
  108.  
  109.  
  110. //funzione ausiliaria per frequenza
  111. int frequenzasingola(classifica c, int i){
  112.     if(c.testa==0||i<0) return 0;
  113.     int conta=0;
  114.     for(squadra*q=c.testa;q!=0; q=q->next){
  115.         if(q->punteggio==i)
  116.             conta++;
  117.     }
  118.     return conta;
  119. }
  120.  
  121. int frequenza(classifica c){
  122.     if(c.testa==0) return 0;
  123.     int max=0;
  124.     for(squadra*q=c.testa; q!=0;q=q->next){
  125.         if(frequenzasingola(c,q->punteggio)>max)
  126.             max=q->punteggio;
  127.     }
  128.     return max;
  129. }
  130.  
  131.  
  132.  
  133. void eliminapunteggio(classifica&c, int i){
  134.     if(i<0) return;
  135.     squadra*p=0;
  136.     squadra*q;
  137.     for(q=c.testa;q!=0 && q->punteggio!=i;q=q->next){
  138.         p=q;
  139.     }
  140.     if(q==c.testa)
  141.         c.testa=q->next;
  142.     else
  143.         p->next=q->next;
  144.     delete q;
  145. }
  146.  
  147. void cancellaultime(classifica&c){
  148.     if(c.testa==0) return;
  149.     eliminapunteggio(c, 0);
  150. }
  151.  
  152. int main() {
  153.  
  154.     classifica C;
  155.     inizializza (C);
  156.     stampa (C); // Classifica:
  157.     aggiungi(C,"prova2");
  158.     stampa (C);
  159.     risultato (C, "Benevento", 3, "Entella", 0);
  160.     risultato (C, "Entella", 0, "Pisa", 3);
  161.     risultato(C, "Pisa", 3, "Benevento", 0);
  162.     stampa (C);
  163.     cout << frequenza(C) << endl; // 0
  164.     cancellaultime(C);
  165.     stampa(C);
  166.     return 0;
  167. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top