Advertisement
Guest User

Lista, inserimento in testa

a guest
Sep 4th, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.58 KB | None | 0 0
  1. // Simulatore di blog
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. struct Articolo {
  6.  
  7. unsigned short int anno;
  8. unsigned short int mese;
  9. unsigned short int giorno;
  10. string titolo;
  11. Articolo* prossimo;
  12. };
  13.  
  14. int main() {
  15.  
  16. Articolo* inizio = NULL;
  17. Articolo* nuovo = NULL;
  18. Articolo* secondo = NULL;
  19. Articolo* tmp = NULL;
  20.  
  21. unsigned short int scelta = 1;
  22. unsigned short int corretto = 0;
  23.  
  24. while(scelta != 2) { // Immettendo 2 il programma termina
  25.  
  26. cout << "Immetti 1 per inserire un nuovo articolo,\n0 per vedere tutti gli articoli pubblicati finora" << endl;
  27. cin >> scelta;
  28. if(scelta == 1) {
  29.  
  30. nuovo = new Articolo;
  31. if(inizio == NULL) nuovo -> prossimo = NULL;
  32. else {
  33. nuovo -> prossimo = inizio;
  34. secondo = inizio;
  35. }
  36. inizio = nuovo;
  37.  
  38. cout << endl << "Anno: ";
  39. while(corretto == 0) {
  40.  
  41. cin >> nuovo -> anno;
  42. if(nuovo -> anno < 2015) cout << nuovo -> anno << "? LOL, scrivi l'anno corretto" << endl << endl;
  43. else if(secondo != NULL && nuovo -> anno < secondo -> anno) cout << "Saresti andato indietro nel tempo? LOL, riscrivi correttamente l'anno" << endl << endl;
  44. else corretto = 1;
  45. }
  46. corretto = 0;
  47.  
  48. cout << "Mese: ";
  49. while(corretto == 0) {
  50.  
  51. cin >> nuovo -> mese;
  52. if(nuovo -> mese < 1 || nuovo -> mese > 12) cout << "Quale sarebbe il " << nuovo -> mese << "° mese? LOL, riscrivilo correttamente" << endl << endl;
  53. else if(secondo != NULL && nuovo -> anno == secondo -> anno && nuovo -> mese < secondo -> mese) cout << "Saresti andato indietro nel tempo? LOL, riscrivi correttamente il mese" << endl << endl;
  54. else corretto = 1;
  55. }
  56. corretto = 0;
  57.  
  58. cout << "Giorno: ";
  59. while(corretto == 0) {
  60.  
  61. cin >> nuovo -> giorno;
  62. if(secondo != NULL && nuovo -> mese == secondo -> mese && nuovo -> giorno < secondo -> giorno) {
  63.  
  64. cout << "Saresti andato indietro nel tempo? LOL, riscrivi correttamente il giorno" << endl << endl;
  65. continue;
  66. }
  67.  
  68. switch(nuovo -> mese) {
  69.  
  70. case 1:
  71. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Gennaio non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  72. else corretto = 1;
  73. break;
  74.  
  75. case 2:
  76. if(nuovo -> giorno < 1) cout << "A Febbraio non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  77. else if(nuovo -> giorno == 29) {
  78.  
  79. if(nuovo -> anno % 4 == 0) corretto = 1;
  80. else cout << "Non siamo in un anno bisestile, il 29 Febbraio non esiste. Riprova" << endl;
  81. }
  82. else if(nuovo -> giorno > 29) cout << "A Febbraio non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  83. else corretto = 1;
  84. break;
  85.  
  86. case 3:
  87. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Marzo non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  88. else corretto = 1;
  89. break;
  90.  
  91. case 4:
  92. if(nuovo -> giorno < 1 || nuovo -> giorno > 30) cout << "Ad Aprile non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  93. else corretto = 1;
  94. break;
  95.  
  96. case 5:
  97. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Maggio non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  98. else corretto = 1;
  99. break;
  100.  
  101. case 6:
  102. if(nuovo -> giorno < 1 || nuovo -> giorno > 30) cout << "A Giugno non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  103. else corretto = 1;
  104. break;
  105.  
  106. case 7:
  107. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Luglio non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  108. else corretto = 1;
  109. break;
  110.  
  111. case 8:
  112. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "Ad Agosto non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  113. else corretto = 1;
  114. break;
  115.  
  116. case 9:
  117. if(nuovo -> giorno < 1 || nuovo -> giorno > 30) cout << "A Settembre non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  118. else corretto = 1;
  119. break;
  120.  
  121. case 10:
  122. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Ottobre non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  123. else corretto = 1;
  124. break;
  125.  
  126. case 11:
  127. if(nuovo -> giorno < 1 || nuovo -> giorno > 30) cout << "A Novembre non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  128. else corretto = 1;
  129. break;
  130.  
  131. case 12:
  132. if(nuovo -> giorno < 1 || nuovo -> giorno > 31) cout << "A Dicembre non esiste il " << nuovo -> giorno << "° giorno, riscrivilo correttamente" << endl << endl;
  133. else corretto = 1;
  134. break;
  135. }
  136. }
  137. corretto = 0;
  138. cout << "Il titolo dell'articolo è:" << endl;
  139. cin >> nuovo -> titolo;
  140. cout << endl;
  141. }
  142. else if(scelta == 0) {
  143.  
  144. cout << endl << endl;
  145. tmp = inizio;
  146.  
  147. while(tmp != NULL) {
  148.  
  149. cout << tmp -> giorno << "/" << tmp -> mese << "/" << tmp -> anno << " " << tmp -> titolo << endl;
  150. tmp = tmp -> prossimo;
  151. }
  152. cout << endl;
  153. }
  154. else if(scelta != 0 && scelta != 1 && scelta != 2) cout << "Input non valido" << endl << endl;
  155. }
  156.  
  157. return 0;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement