Advertisement
Guest User

Untitled

a guest
Jan 29th, 2020
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.11 KB | None | 0 0
  1.  
  2.  
  3. /*Si vuole simulare un'agenda elettronica. Essa è divisa da mesi e giorni con i vari orari.
  4. L'agenda permette all'utente di inserire, disdire e visualizzare un appuntamento*/
  5.  
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #define NULL 0;
  11. typedef struct agenda { //Dichiaro la struct
  12. char appuntamento[20];
  13. int ora;
  14. int mese;
  15. int giorno;
  16. char oggetto[100]
  17. };
  18. //Dichiaro le funzioni per l'inserimento dell'appuntamento, per la visualizzazione di quest'ultimo e per la disdetta
  19. int inserire(struct agenda appuntamento [], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[]);
  20. int visualizzare(struct agenda appuntamento [], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[]);
  21. int disdire(struct agenda appuntamento [], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[]);
  22.  
  23. int main(){
  24.  
  25. struct agenda appuntamento[100];
  26. struct agenda ora;
  27. struct agenda mese;
  28. struct agenda giorno;
  29. struct agenda oggetto[100];
  30. int scelta;
  31. printf("Benvenuto nella tua agenda elettronica!");
  32.  
  33. //Menu' per far scegliere all'utente cosa fare
  34. while(1){
  35. printf("\nDigita: \n1 per inserire un appunamento\n2 per disdire un appuntamento\n3 per visualizzare gli appuntamenti di un mese\n4 per uscire\n");
  36.  
  37. scanf("%d",&scelta);
  38. switch(scelta){ //i vari casi in base a cosa l'utente vuole fare
  39. case 1:
  40. inserire(appuntamento, ora, mese, giorno, oggetto); //Inserimento di un appuntamento
  41. break;
  42. case 2:
  43. disdire(appuntamento, ora, mese, giorno, oggetto); //Disdetta di un appuntamento
  44. break;
  45. case 3:
  46. visualizzare(appuntamento, ora, mese, giorno, oggetto); //Visualizzazione degli appuntamenti di un mese
  47. break;
  48. case 4:
  49. return 0; //Uscita dal programma
  50. default:
  51. printf("\nInserisci un valore consentito"); // Visualizza l'errore nel caso di un valore non consentito
  52. break;
  53. }
  54. }
  55. return 0;
  56. }
  57.  
  58. //CASO 1: Dove avviene l'inserimento dell'appuntamento
  59. int inserire(struct agenda appuntamento [100], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[100]){
  60. int n,i;
  61. printf("\nQuanti appuntamenti vuoi inserire? ");
  62. scanf("%d", &n);
  63.  
  64. for(i=0; i<n; i++){ //Inserimento ripetuto in base a quanti appuntamenti l'utente vuole inserire
  65. printf("\nAppuntamento %d", i+1);
  66.  
  67. do{ //Ciclo per non far commettere errori di inserimento all'utente
  68. printf("\nInserisci numericamente il mese:");
  69. scanf("%d", &appuntamento[i].mese); //Inserimento del mese
  70. }while(!(appuntamento[i].mese>=1 &&appuntamento[i].mese<=12));
  71. do{
  72. printf("Inserisci numericamente il giorno:");
  73. scanf("%d", &appuntamento[i].giorno); //Inserimento del giorno
  74. }while(!(appuntamento[i].giorno>=1 && appuntamento[i].giorno<=31));
  75. do{
  76. printf("Inserisci numericamente l'ora:");
  77. scanf("%d", &appuntamento[i].ora); //Inserimento dell'ora
  78. }while (!(appuntamento[i].ora>=0 &&appuntamento[i].ora <=23));
  79. fflush(stdin); //Svuotamento del buffer
  80. puts("scrivi l'appuntamento:"); //Inserimento dell'oggetto da parte dell'utente
  81. gets(appuntamento[i].oggetto);
  82.  
  83. }
  84. }
  85.  
  86. //CASO 2: Dove avviene la visualizzazione dell'appuntamento
  87. int visualizzare(struct agenda appuntamento [100], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[100]){
  88. int i,visualizza_ora;
  89. do{
  90. printf("\nQuale ora dell'appuntamento cerchi?"); //Inserimento dell'ora dell'appuntamento che si vuole visualizzare
  91. scanf("%d",&visualizza_ora);
  92. }while (!(visualizza_ora>=0 &&visualizza_ora <=23));
  93. for (i=0; i<100; i++){ //cicli concatenati per permettere all'utente di visualizzare, nell'orario scelto, tutti gli appuntamenti dei vari mesi
  94. if(appuntamento[i].ora==visualizza_ora){
  95. printf("\nEcco l'appuntamento del %d.%d alle ore %d\nl'oggetto e': %s\n",appuntamento[i].giorno, appuntamento[i].mese, appuntamento[i].ora, appuntamento[i].oggetto); //visualizzazione dei vari appuntamenti
  96.  
  97. }
  98.  
  99. }
  100. }
  101.  
  102. //CASO 3: Dove avviene la disdetta dell'appuntamento
  103. int disdire(struct agenda appuntamento [100], struct agenda ora, struct agenda mese, struct agenda giorno, struct agenda oggetto[]){
  104. printf("\n Quale appuntamento desideri disdire?");
  105. int i,disdire_mese, disdire_ora, disdire_giorno;
  106.  
  107. printf("\n Inserisci il mese dell'appuntamento da disdire:");
  108. scanf("%d",&disdire_mese); //Inserimento del mese dell'appuntamento da disdire
  109. printf("\n Inserisci il giorno:");
  110. scanf("%d",&disdire_giorno); //Inserimento del giorno dell'appuntamento da disdire
  111. printf("\n Inserisci l'ora: ");
  112. scanf("%d",&disdire_ora); //Inserimento del'ora dell'appuntamento da disdire
  113. for (i=0; i<100; i++){ //cicli concatenati per permettere la disdetta dei vari appuntamenti
  114. if (appuntamento[i].ora == disdire_ora && appuntamento[i].mese == disdire_mese && appuntamento[i].giorno == disdire_giorno){
  115. //annullamento dell'appuntamento:
  116. appuntamento[i].ora = NULL;
  117. appuntamento[i].mese = NULL;
  118. appuntamento[i].giorno = NULL;
  119. }
  120. }
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement