Advertisement
wojtas626

[C] Ciagi liczb rzeczywistych

Jan 17th, 2015
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. struct Sequence
  6. {
  7.     int length;
  8.     double *firstElement;
  9.     struct Sequence *next;
  10. };
  11.  
  12.  
  13. void loadData(struct Sequence **SequencePointer, int sequenceLength)
  14. {
  15.     int i;
  16.  
  17.  
  18.     (*SequencePointer)->next = NULL;
  19.     (*SequencePointer)->length = sequenceLength;
  20.     (*SequencePointer)->firstElement = (double*)malloc(sizeof(double)*sequenceLength);
  21.  
  22.     printf("Podaj wyrazy ciagu (%d):\n", sequenceLength);
  23.     for (i = 0; i < (*SequencePointer)->length; i++)
  24.     {
  25.         scanf("%lf", &((*SequencePointer)->firstElement[i]));
  26.     }
  27. }
  28.  
  29.  
  30. int addSequence(struct Sequence **headPointer)
  31. {
  32.     struct Sequence *pointer;
  33.     int sequenceLength;
  34.  
  35.     pointer = *headPointer;
  36.  
  37.     printf("Podaj dlugosc ciagu: ");
  38.     scanf("%d", &sequenceLength);
  39.  
  40.  
  41.     if(sequenceLength == 0)
  42.     {
  43.         return 0;
  44.     }
  45.  
  46.     if (pointer == NULL)
  47.     {
  48.         pointer = (struct Sequence*)malloc(sizeof(struct Sequence));
  49.         loadData(&pointer, sequenceLength);
  50.         *headPointer = pointer;
  51.         return 1;
  52.     }
  53.     else
  54.     {
  55.         while (pointer->next != NULL)
  56.         {
  57.             pointer = pointer->next;
  58.         }
  59.         pointer->next = (struct Sequence*)malloc(sizeof(struct Sequence));
  60.         pointer = pointer->next;
  61.         loadData(&pointer, sequenceLength);
  62.         return 1;
  63.     }
  64. }
  65.  
  66.  
  67. void findAverages(struct Sequence *headSequence, double *maxAverage, double *minAverage, struct Sequence **minAverageSequence, struct Sequence **maxAverageSequence)
  68. {
  69.     double average;
  70.     int i;
  71.  
  72.     *maxAverage = 0;
  73.     *minAverage = 0;
  74.     average = 0;
  75.     if(headSequence != NULL)
  76.     {
  77.         for (i = 0; i < headSequence->length; i++)
  78.         {
  79.             average += headSequence->firstElement[i];
  80.         }
  81.         average /= headSequence->length;
  82.         *maxAverage = average;
  83.         *minAverage = average;
  84.         *minAverageSequence = headSequence;
  85.         *maxAverageSequence = headSequence;
  86.  
  87.         while (headSequence->next != NULL)
  88.         {
  89.             average = 0;
  90.             headSequence = headSequence->next;
  91.             for (i = 0; i < headSequence->length; i++)
  92.             {
  93.                 average += headSequence->firstElement[i];
  94.             }
  95.             average /= headSequence->length;
  96.  
  97.             if (*maxAverage < average)
  98.             {
  99.                 *maxAverage = average;
  100.                 *maxAverageSequence = headSequence;
  101.             }
  102.             if (*minAverage > average)
  103.             {
  104.                 *minAverage = average;
  105.                 *minAverageSequence = headSequence;
  106.             }
  107.         }
  108.     }
  109. }
  110.  
  111.  
  112. int main()
  113. {
  114.     struct Sequence *headSequence, *minAverageSequence, *maxAverageSequence;
  115.     double maxAverage, minAverage;
  116.  
  117.  
  118.     headSequence = NULL;
  119.  
  120.     while(addSequence(&headSequence));
  121.  
  122.     findAverages(headSequence, &maxAverage, &minAverage, &minAverageSequence, &maxAverageSequence);
  123.  
  124.     printf("Srednia MIN: %lf (ciag skladajacy sie z wyrazow w liczbie: %d)\n", minAverage, minAverageSequence->length);
  125.     printf("Srednia MAX: %lf (ciag skladajacy sie z wyrazow w liczbie: %d)\n", maxAverage, maxAverageSequence->length);
  126.  
  127.  
  128.  
  129.     return 0;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement