Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct Sequence
- {
- int length;
- double *firstElement;
- struct Sequence *next;
- };
- void loadData(struct Sequence **SequencePointer, int sequenceLength)
- {
- int i;
- (*SequencePointer)->next = NULL;
- (*SequencePointer)->length = sequenceLength;
- (*SequencePointer)->firstElement = (double*)malloc(sizeof(double)*sequenceLength);
- printf("Podaj wyrazy ciagu (%d):\n", sequenceLength);
- for (i = 0; i < (*SequencePointer)->length; i++)
- {
- scanf("%lf", &((*SequencePointer)->firstElement[i]));
- }
- }
- int addSequence(struct Sequence **headPointer)
- {
- struct Sequence *pointer;
- int sequenceLength;
- pointer = *headPointer;
- printf("Podaj dlugosc ciagu: ");
- scanf("%d", &sequenceLength);
- if(sequenceLength == 0)
- {
- return 0;
- }
- if (pointer == NULL)
- {
- pointer = (struct Sequence*)malloc(sizeof(struct Sequence));
- loadData(&pointer, sequenceLength);
- *headPointer = pointer;
- return 1;
- }
- else
- {
- while (pointer->next != NULL)
- {
- pointer = pointer->next;
- }
- pointer->next = (struct Sequence*)malloc(sizeof(struct Sequence));
- pointer = pointer->next;
- loadData(&pointer, sequenceLength);
- return 1;
- }
- }
- void findAverages(struct Sequence *headSequence, double *maxAverage, double *minAverage, struct Sequence **minAverageSequence, struct Sequence **maxAverageSequence)
- {
- double average;
- int i;
- *maxAverage = 0;
- *minAverage = 0;
- average = 0;
- if(headSequence != NULL)
- {
- for (i = 0; i < headSequence->length; i++)
- {
- average += headSequence->firstElement[i];
- }
- average /= headSequence->length;
- *maxAverage = average;
- *minAverage = average;
- *minAverageSequence = headSequence;
- *maxAverageSequence = headSequence;
- while (headSequence->next != NULL)
- {
- average = 0;
- headSequence = headSequence->next;
- for (i = 0; i < headSequence->length; i++)
- {
- average += headSequence->firstElement[i];
- }
- average /= headSequence->length;
- if (*maxAverage < average)
- {
- *maxAverage = average;
- *maxAverageSequence = headSequence;
- }
- if (*minAverage > average)
- {
- *minAverage = average;
- *minAverageSequence = headSequence;
- }
- }
- }
- }
- int main()
- {
- struct Sequence *headSequence, *minAverageSequence, *maxAverageSequence;
- double maxAverage, minAverage;
- headSequence = NULL;
- while(addSequence(&headSequence));
- findAverages(headSequence, &maxAverage, &minAverage, &minAverageSequence, &maxAverageSequence);
- printf("Srednia MIN: %lf (ciag skladajacy sie z wyrazow w liczbie: %d)\n", minAverage, minAverageSequence->length);
- printf("Srednia MAX: %lf (ciag skladajacy sie z wyrazow w liczbie: %d)\n", maxAverage, maxAverageSequence->length);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement