Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- struct Circle
- {
- char name;
- double radius;
- double x;
- double y;
- struct Circle *next;
- };
- void addCircles(struct Circle **headPointer)
- {
- int choose;
- struct Circle *pointer;
- pointer = *headPointer;
- printf("1. Dodaj kolo\n");
- printf("2. Zakoncz dodawanie\n");
- scanf("%d", &choose);
- while (choose == 1)
- {
- if (pointer == NULL)
- {
- pointer = (struct Circle*)malloc(sizeof(struct Circle));
- pointer->next = NULL;
- printf("\nWprowadz nazwe (1 znak): ");
- scanf(" %c", &(pointer->name));
- printf("\nWprowadz wsporzedna X: ");
- scanf("%lf", &(pointer->x));
- printf("\nWprowadz wsporzedna Y: ");
- scanf("%lf", &(pointer->y));
- printf("\nWprowadz promien: ");
- scanf("%lf", &(pointer->radius));
- *headPointer = pointer;
- }
- else
- {
- while (pointer->next != NULL)
- {
- pointer = pointer->next;
- }
- pointer->next = (struct Circle*)malloc(sizeof(struct Circle));
- pointer = pointer->next;
- pointer->next = NULL;
- printf("\nWprowadz nazwe (1 znak): ");
- scanf(" %c", &(pointer->name));
- printf("\nWprowadz wsporzedna X: ");
- scanf("%lf", &(pointer->x));
- printf("\nWprowadz wsporzedna Y: ");
- scanf("%lf", &(pointer->y));
- printf("\nWprowadz promien: ");
- scanf("%lf", &(pointer->radius));
- }
- printf("1. Dodaj kolo\n");
- printf("2. Zakoncz dodawanie\n");
- scanf("%d", &choose);
- }
- }
- int checkCirclesAmount(struct Circle *head)
- {
- int circlesAmount;
- circlesAmount = 0;
- if(head != NULL)
- {
- circlesAmount = 1;
- while(head->next != NULL)
- {
- head = head->next;
- circlesAmount++;
- }
- }
- return circlesAmount;
- }
- int **checkCircles(struct Circle *head)
- {
- int circlesAmount, i, j;
- struct Circle *pointer, *pointer2;
- int **checkArray;
- pointer = head;
- circlesAmount = checkCirclesAmount(head);
- checkArray = (int **)malloc(sizeof(int*)*(circlesAmount-1));
- j = circlesAmount - 1;
- for(i = 0; i < (circlesAmount - 1); i++)
- {
- checkArray[i] = (int*)malloc(sizeof(int)*j);
- j--;
- }
- pointer = head;
- pointer2 = head;
- for (i = 0; i < (circlesAmount - 1); i++)
- {
- for(j = 0; j < (circlesAmount - 1 - i); j++)
- {
- double distance;
- pointer2 = pointer2->next;
- distance = sqrt((pointer->x - pointer2->x)*(pointer->x - pointer2->x) + (pointer->y - pointer2->y)*(pointer->y - pointer2->y));
- if (distance <= pointer->radius + pointer2->radius)
- {
- checkArray[i][j] = 1;
- }
- else
- {
- checkArray[i][j] = 0;
- }
- }
- pointer = pointer->next;
- pointer2 = pointer;
- }
- return checkArray;
- }
- int main()
- {
- struct Circle *head;
- int **checkArray;
- int i, j, circlesAmount;
- head = NULL;
- addCircles(&head);
- checkArray = checkCircles(head);
- circlesAmount = checkCirclesAmount(head);
- for (i = 0; i < (circlesAmount - 1); i++)
- {
- for (j = 0; j < (circlesAmount - 1 - i); j++)
- {
- if(checkArray[i][j])
- {
- printf("tak ");
- }
- else
- {
- printf("nie ");
- }
- }
- printf("\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement