Funkcje które operują na strukturach

0

Witam, mam do napisania taki 3 funkcje których przeznaczenie jest napisane w nazwie, czy ktoś ma jakiś pomysł? Ewentualnie jakieś wskazówki jak to mógłbym napisać?

#include <stdio.h>
#include <stdlib.h>


struct MY_VERT
{
	double cr[2];
};

struct Circle
{
	int num_vert;
	MY_VERT* vert;
	double r;
};

MY_VERT* MY_VERT_init(double xx, double yy);
void MY_VERT_free(MY_VERT* ptr);
void MY_VERT_print(MY_VERT* ptr);
Circle* CreateCircle(int n_vert, double rr);
void FreeCircle(Circle* ptr);
void PrintCircle(Circle* ptr, const char* title);

int main()
{

		int nvert = 0;
		double r[2] = { 2.0, 3.0 };
		Circle* pcirc[2] = { NULL, NULL };
		printf("Input vertex number\n");
		scanf("%ld", &nvert);
		
		for (int it = 0; it < 2; ++it)
		{
			pcirc[it] = CreateCircle(nvert, r[it]);
		}
		//wprowadzenie obydwu okregów na monitor
		//przypisac jeden okrąg do drugiego
		//wprowadzić obu 
		
		
		
		
		for (int it = 0; it < 2; ++it)
		{
			FreeCircle(pcirc[it]);
			pcirc[it] = NULL;
		}
}


MY_VERT* MY_VERT_init(double xx, double yy)
{
	MY_VERT* punkt = (MY_VERT*)malloc(sizeof(MY_VERT));
	punkt -> cr[0] = xx;
	punkt -> cr[1] = yy;
	return punkt;
}

void MY_VERT_free(MY_VERT* ptr)
{
	if (ptr)
		free(ptr);
	ptr = NULL;
}

void MY_VERT_print(MY_VERT* ptr)
{

}


Circle* CreateCircle(int n_vert, double rr)
{

}

void FreeCircle(Circle* ptr) 
{
	if (ptr)
		free(ptr);
	ptr = NULL;
}




void PrintCircle(Circle* ptr, const char* title)
{
	printf("Okrąg: %s\n", title);
	int i;
	int n = ptr->num_vert;
	for (i = 0;i < n;i++)
		MY_VERT_print((ptr->vert)++);
}
0

Opisz to jakoś lepiej, co to jest MY_VERT, jeśli to punkt na płaszczyźnie, to czemu nie opisujesz go dwoma, double, dlaczego, CIRCLE ma trzy pola? Acha, i te nazwy struktur i funkcji dużymi literami rzucaja się troche na oczy :)

0

@lion137: Przepraszam, tak MY_VERT to punkt na płaszczyźnie, nazwy funkcji niestety nie ja pisałem, ale rozumiem Pana uwagi, zadaniem tego programu ma być wprowadzenie 2 okręgów, wypisanie na monitor punktów, a potem przypisanie jednego okręgu do drugiego, mam nadzieje że dobrze wytłumaczyłem

2
  1. Nie masz ustalonego coding convention (symbole jednego typu, powinny mieć nazwy w tym samym wzorcu camelCase pascal_case i układzie).
  • masz struktury, które nazywają się: MY_VERT oraz Circle co nie jest konsystentne
  • jedna funkcja się nazywa MY_VERT_init a inna podobna CreateCircle
  • w dobrze napisanym kodzie C nazwy funkcji do operowania na danej strukturze mają formę: <Prefix><NazwaStruktury><Czasownik><Szczegół> (prefix jest obowiązkowy dla bibliotek, dla aplikacji można sobie odpuścić)
  1. kompilujesz swój kod pod plikiem ze złym rozszerzaniem, przez co kompiluje się jako C++! Gdyby to było kompilowane jako C to powinny być błędy. https://godbolt.org/z/sYTe44vb3 tak samo w C to cast'owanie: MY_VERT* punkt = (MY_VERT*)malloc(sizeof(MY_VERT)); jest zbędne.
  2. nie rozumiem pytania. Coś napisałeś, co ci nie działa?
0

Zacznij może od tego:

struct Circle
{
    const char *title;
    double y,x,r;
};

struct CirclesArray
{
    int circleCount;
    Circle *circles;
};

Resztę wywal i zacznij pisać z poprawną strukturą danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1