Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<time.h>
- struct Point {
- int x, y;
- };
- struct Figura {
- unsigned short size;
- Point** p;
- };
- void inicjacja(Figura** figura, int ilosc) {
- *figura = (Figura*)malloc(ilosc * sizeof(Figura));
- for (int i = 0; i < ilosc; i++) {
- (*figura)[i].p = (Point**)malloc(ilosc * sizeof(Point*));
- for (int j = 0; j < ilosc; j++) {
- (*figura)[i].p[j] = (Point*)malloc(sizeof(Point));
- }
- }
- }
- void stworz_baze(Figura* figura, int ilosc) {
- for (int i = 0; i < ilosc; i++) {
- figura[i].size = ilosc;
- for (int j = 0; j < ilosc; j++) {
- figura[i].p[j]->x = rand() % 20;
- figura[i].p[j]->y = rand() % 20;
- }
- }
- }
- void dodaj_figure(Figura** figura, int* ilosc) {
- Figura* temp;
- *ilosc = *ilosc + 1;
- temp = (Figura*)malloc(*ilosc * sizeof(Figura));
- for (int i = 0; i < (*ilosc - 1); i++) {
- temp[i] = (*figura)[i];
- }
- temp[*ilosc - 1].size = 2;
- temp[*ilosc - 1].p = (Point**)malloc(temp[*ilosc - 1].size * sizeof(Point*));
- for (int j = 0; j < temp[*ilosc - 1].size; j++) {
- temp[*ilosc - 1].p[j] = (Point*)malloc(sizeof(Point));
- }
- for (int j = 0; j < temp[*ilosc - 1].size; j++) {
- temp[*ilosc - 1].p[j]->x = rand() % 20;
- temp[*ilosc - 1].p[j]->y = rand() % 20;
- }
- free(*figura);
- *figura = temp;
- }
- void usun_figure(Figura** figura, int* ilosc) {
- *ilosc = *ilosc - 1;
- Figura* temp;
- int los;
- los = rand() % (*ilosc);
- temp = (Figura*)malloc(*ilosc * sizeof(Figura));
- for (int i = 0; i < los; i++) {
- temp[i] = (*figura)[i];
- }
- for (int i = los; i < *ilosc; i++) {
- temp[i] = (*figura)[i + 1];
- }
- free(*figura);
- *figura = temp;
- }
- void dodaj_punkt(Figura** figura, int ilosc) {
- Point** temp;
- int los = rand() % ilosc;
- (*figura)[los].size = (*figura)[los].size + 1;
- temp = (Point**)malloc((*figura)[los].size * sizeof(Point*));
- for (int i = 0; i < (*figura)[los].size; i++) {
- temp[i] = (Point*)malloc(sizeof(Point));
- }
- for (int i = 0; i < ((*figura)[los].size - 1); i++) {
- temp[i][0] = (*figura)[los].p[i][0];
- }
- temp[(*figura)[los].size - 1]->x = rand() % 20;
- temp[(*figura)[los].size - 1]->y = rand() % 20;
- for (int i = 0; i < (*figura)[los].size - 1; i++) {
- free((*figura)[los].p[i]);
- }
- free((*figura)[los].p);
- (*figura)[los].p = temp;
- }
- void usun_punkt(Figura** figura, int ilosc) {
- int los = rand() % ilosc;
- Point** temp;
- (*figura)[los].size = (*figura)[los].size - 1;
- temp = (Point**)malloc((*figura)[los].size * sizeof(Point*));
- for (int i = 0; i < (*figura)[los].size; i++) {
- temp[i] = (Point*)malloc(sizeof(Point));
- }
- for (int i = 0; i < los; i++) {
- temp[i][0] = (*figura)[los].p[i][0];
- }
- for (int i = los; i < (*figura)[los].size; i++) {
- temp[i][0] = (*figura)[los].p[i + 1][0];
- }
- for (int i = 0; i < (*figura)[los].size + 1; i++) {
- free((*figura)[los].p[i]);
- }
- free((*figura)[los].p);
- (*figura)[los].p = temp;
- }
- void pokaz(Figura* figura, int ilosc) {
- for (int i = 0; i < ilosc; i++) {
- printf("FIGURA %d:", i);
- for (int j = 0; j < figura[i].size; j++) {
- printf("(%d,%d)\t", j, figura[i].p[j]->x, figura[i].p[j]->y);
- }
- printf("\n");
- if (figura[i].size == 1)printf("FIGURA JEST PUNKTEM");
- else if (figura[i].size == 2)printf("FIGURA JEST PROSTA");
- else printf("FIGURA JEST %d-KATEM", figura[i].size);
- printf("\n\n");
- }
- }
- int main() {
- srand(time(NULL));
- Figura* figura;
- int wybor;
- int ilosc = 2;
- char ch;
- inicjacja(&figura, ilosc);
- do {
- printf("Menu\n\n");
- printf("1. Stworz baze figur \n");
- printf("2. Dodaj figure \n");
- printf("3. Usun figure \n");
- printf("4. Dodaj punkt do figury \n");
- printf("5. Usun punkt figury \n");
- printf("6. Pokaz figury \n");
- printf("0. Exit\n");
- printf("Wybierz opcje: \n");
- scanf_s("%d", &wybor);
- ch = getchar();
- system("cls");
- switch (wybor) {
- case 1:
- stworz_baze(figura, ilosc);
- break;
- case 2:
- dodaj_figure(&figura, &ilosc);
- break;
- case 3:
- usun_figure(&figura, &ilosc);
- break;
- case 4:
- dodaj_punkt(&figura, ilosc);
- break;
- case 5:
- usun_punkt(&figura, ilosc);
- break;
- case 6:
- pokaz(figura, ilosc);
- break;
- case 0:
- break;
- default:
- printf("Blad");
- }
- while ((ch = getchar()) != '\n');
- system("cls");
- } while (wybor != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement