Ledger Nano X - The secure hardware wallet
SHARE
TWEET

Untitled

a guest Apr 10th, 2020 123 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct orario{
  6.     int ore, minuti, secondi;
  7.     orario(int a = 0, int b = 0, int c = 0) {
  8.         ore = a;
  9.         minuti = b;
  10.         secondi = c;
  11.     }
  12. };
  13.  
  14. struct rileva{
  15.     int ril, corr;
  16.     orario time;
  17.     rileva(int a = 0, int b = 0, orario c = orario()) {
  18.         ril = a;
  19.         corr = b;
  20.         time = c;
  21.     }
  22. };
  23.  
  24. istream &operator>>(istream &input, orario &x) {
  25.     input >> x.ore;
  26.     input >> x.minuti;
  27.     input >> x.secondi;
  28. }
  29.  
  30. // input rilevazione
  31. istream &operator>>(istream &input, rileva &x) {
  32.     input >> x.ril;
  33.     input >> x.corr;
  34.     input >> x.time;
  35. }
  36.  
  37. // output orario
  38. ostream &operator<<(ostream &output, orario &x) {
  39.     output << x.ore << " ";
  40.     output << x.minuti << " ";
  41.     output << x.secondi;
  42.     return output;
  43. }
  44.  
  45. // output rilevazione
  46. ostream &operator<<(ostream &output, rileva &x) {
  47.     output << x.ril << " ";
  48.     output << x.corr << " ";
  49.     output << x.time;
  50.     return output;
  51. }
  52.  
  53.  
  54.  
  55.  
  56. // PRE : prende in input due rilevamenti ben formati
  57. int differenzaInSecondi(rileva f, rileva s) {
  58.     int x = (s.time.ore * 60 * 60 + s.time.minuti * 60 + s.time.secondi);
  59.     int y = (f.time.ore * 60 * 60 + f.time.minuti * 60 + f.time.secondi);
  60.     return x-y;
  61. }
  62. // POST: ritorna la differenza di essi in secondi
  63.  
  64. // PRE: dati è un una matrice Nx3 con rilevamenti ben formati, passato è una matrice Nx3 ben formata e i€[0,N)
  65. bool tempoSospetto(rileva dati[][3], bool passato[][3], int i) {
  66.     bool sent = false;
  67.     // controllo se "ha fatto" la prima metà della maratona
  68.     if (passato[i][0] && passato[i][1] && 165 > (differenzaInSecondi(dati[i][0], dati[i][1])) / 11)
  69.         sent = true;
  70.  
  71.     // controllo se "ha fatto" la seconda metà della maratona
  72.     if (passato[i][1] && passato[i][2] && 165 > (differenzaInSecondi(dati[i][1], dati[i][2])) / 10.975)
  73.         sent = true;
  74.  
  75.     return sent;
  76. }
  77. //POST =    true sse corridore i non ha fatto alcun tempo sospetto (nelle due metà)
  78. //          false altrimenti
  79.  
  80.  
  81. int main() {
  82.     int numero_corridori;
  83.     cin >> numero_corridori;
  84.  
  85.     orario z;
  86.     cin >> z; // inutile
  87.  
  88.  
  89.     rileva dati_rilevamenti[numero_corridori][3];
  90.     bool passato[numero_corridori][3];
  91.  
  92.     // parto con l'ipotesi che tutti non son passati per nessun sensore
  93.     for (int j = 0; j < numero_corridori; j++)
  94.         for (int i = 0; i < 3; i++)
  95.             passato[j][i] = false;
  96.  
  97.     rileva rilevamento;
  98.     cin >> rilevamento; //primo rilevamento
  99.     while (rilevamento.ril != -1) {
  100.         // il rilevamento del corridore corr e numero ril = rilevamento ricevuto in input
  101.         dati_rilevamenti[rilevamento.corr][rilevamento.ril] = rilevamento;
  102.         // mi sengo che il corridore corr è passato per il sensore n° ril
  103.         passato[rilevamento.corr][rilevamento.ril] = true;
  104.         // input del rilevamento successivo
  105.         cin >> rilevamento;
  106.     }
  107.     for(int i = 0; i< numero_corridori;i++){
  108.         for(int j = 0; j < 3; ++j)
  109.             cout<<passato[i][j]<<" , ";
  110.         cout<<"\n";
  111.     }
  112.     // dati_rilevamento contiene i rilevamenti
  113.     // passato contiene true sse il corridore corr è passato per il rilevamento ril
  114.  
  115.     bool errore_salto_sensore = false;
  116.     bool errore_tempo_sospetto = false;
  117.  
  118.     for (int i = 0; i < numero_corridori; i++) {
  119.         // se il tempo è sospetto
  120.         if ( tempoSospetto(dati_rilevamenti, passato, i)) {
  121.             // segnalo il tempo sospetto
  122.             cout << i << ": tempo sospetto" << endl;
  123.             // mi segno che c'è stato almeno un tempo sospetto
  124.             errore_tempo_sospetto = true;
  125.         }
  126.  
  127.         // controllo che il corridore i sia passato per ogni sensore
  128.         for (int j = 0; j < 3; j++) {  // R = j € [0,3] && controllati tutti i sensori del corridore i da 0 fino a j
  129.             if ( !passato[i][j] ) {
  130.                 // segnalo che il corridore i ha saltato un sensore
  131.                 cout << i << ": salto sensore" << endl;
  132.                 // mi segno che c'è stato almeno un sensore saltato
  133.                 errore_salto_sensore = true;
  134.             }
  135.         }
  136.     }
  137.     // se non ci son stati tempi sospetti e nessuno ha saltato sensori, allora segnalo che la gara è regolare
  138.  
  139.  
  140.     // if( errore_tempo_sospetto == false && errore_salto_sensore==false )
  141.     if (!errore_tempo_sospetto && !errore_salto_sensore)
  142.         cout << "gara regolare";
  143.  
  144. }
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