Advertisement
levartolona

experiments_cdio

Jan 11th, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct experiment
  5. {
  6.     int amount;
  7.     double *results;
  8. }experiment_t;
  9.  
  10. experiment_t *journal_create(experiment_t* journal, int max_size)
  11. {
  12.     journal = malloc(sizeof(experiment_t) * max_size);
  13.     if (!journal)
  14.         return NULL;
  15.  
  16.     for (int i = 0; i < max_size; i++)
  17.         (journal + i) -> results = NULL;
  18.  
  19.     return journal;
  20. }
  21.  
  22. void j_delete(experiment_t* journal, int size)
  23. {
  24.     for (int i = 0; i < size; i++)
  25.     {
  26.         free((journal + i) -> results);
  27.         (journal + i) -> results = NULL;
  28.     }
  29.     free(journal);
  30.  
  31.     return;
  32. }
  33.  
  34. experiment_t *journal_input(experiment_t* journal, int *size, int max_size)
  35. {
  36.     int amount;
  37.     if ((scanf("%i", &amount) != 1) || amount == 0)
  38.     {
  39.         j_delete(journal, *size);
  40.         return NULL;
  41.     }
  42.  
  43.     (journal + *size) -> amount = amount;
  44.     (journal + *size) -> results = malloc(sizeof(double) * amount);
  45.     if (!((journal + *size) -> results))
  46.     {
  47.         j_delete(journal, *size);
  48.         return NULL;
  49.     }
  50.  
  51.     for (int i = 0; i < amount; i++)
  52.     {
  53.         if (scanf("%lf", (((journal + *size) -> results) + i)) != 1)
  54.         {
  55.             j_delete(journal, *size);
  56.             return NULL;
  57.         }
  58.     }
  59.  
  60.     (*size)++;
  61.  
  62.     return journal;
  63. }
  64.  
  65. void journal_output(experiment_t *journal, int size)
  66. {
  67.     for(int i = 0; i < size; i++)
  68.     {
  69.         printf("res of experiment %d is", i);
  70.         for(int j = 0; j < (journal + i) -> amount; j++)
  71.             printf("%lf", *(((journal + i) -> results) + j));
  72.         printf("\n");
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement