potencjal grawitacyjny

0

Mam do wykonania nastepujace zadanie:

//Stworzyc symulator potencjalu grawitacyjnego dfa dowolnej liczby cial o punktowych rozmiarach, zadanych masach i polozeniach na plaszczyznie.
//Specyfikacja:
//- dowolne rozmiary obszaru okreslone przez uzytkowanika przy uruchomieniu programu
//- dowolna liczba cial (oznaczonych kolejnymi literami alfabetu 'A'=asci 65), mozliwosc dodawania i usuwania cial oraz zmiany ich parametrow (masy i polozenia)
//- wyswietlana wartosc kodowana w sposob dyskretny za pomoca cyfr od 9 (najmniejsza wartosc) do 0 (najwieksza wartosc)
//mozliwosc wydrukwoania do pliku dokladnej wartosci wypadkowego potencjalu dla poszczegolnych "pikseli".

Jednak zatrzymalem sie na takim etapie. Ktos wie jak to zrobic dalej?

 

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

struct pot
{
	int x;
	int y;
	float masa;
};

void wypelnij(int **tab, int xd, int yd)
{
    int i,j;
    for(i=0;i<xd;i++)
        {
        for(j=0;j<yd;j++) {
            tab[i][j]=1;
            if(tab[i][j]<=yd)
            printf(" ");
            printf("%d ", tab[i][j]);
        }
            printf("\n");
                }
}
int main(void)
{
    int xdim, ydim, i, j;  //deklaracja zmiennych
    int **tablica;
    int a, b, x, y;
    float V1, G, masa, r1, r2;
	struct pot p1;    
	struct pot p2;
	struct pot p3;
		
		G=-6,67384;
		p1.x=x;
		p1.y=y;
		p2.x=x;
		p2.x=x;
		p3.y=y;
		p3.y=y;
		p1.masa=masa;
		p2.masa=masa;
		p3.masa=masa;
		
    srand(time(NULL));
    
    printf("Podaj rozmiary tablicy: ");
    scanf("%d %d", &xdim, &ydim);
    
    tablica = (int **)malloc(xdim * sizeof(*tablica)); //tablica wskaznikow
    for(i=0;i<xdim;i++)
    {
        tablica[i]=(int *)malloc(ydim * sizeof(**tablica)); //rezerwacja odpowiedniej ilosci pamieci dla kazdego wskaznika
    }
        wypelnij(tablica, xdim, ydim);
        printf("\np1x %d p2x %d p1y %d p2y %d", p1.x, p2.x, p1.y, p2.y);                                //liczenie R1
		r1=sqrt(((p1.x-p2.x)*(p1.x-p2.x))+((p1.y-p2.y)*(p1.y-p2.y)));
		printf("\n%f\n", r1);
                                   //liczenie R2
		r2=sqrt(((p2.x-p3.x)^2)+((p2.y-p3.y)^2));
		printf("\n%f\n", r2);
								 //liczenie potencjalu w punkcie podanym przez uzytkownika
		V1=(-G*masa)/r1;
		printf("Potencjal w danym punkcie wynosi %f", V1);
        
        for(i=0;i<xdim;i++)
        {
            free(tablica[i]); //zwalniamy poszczegolne tablice
        }
        free(tablica); //zwalniamy tablice wskaznikow 
    
    getchar();
    getchar();
    
    return 0;
}
0
  1. Nie napisałeś gdzie i na czym się zatrzymałeś ?
    zostaje analiza kodu bez komentarzy
    zastanów się czy Twój post jest poważny ?

  2. wydaje mi się, że :

    • struktura pot - nie zawiera danych które są niezbędne do realizacji zadania
      • oznaczonych kolejnymi literami alfabetu
      • brak miejsca na przechowanie wyznaczonej wartości potencjału lub odpowiedniej funkcji
      • nazwa ? lepsze byłoby ciało
    • main - dowolna liczba cial - jakiś kontener np. tablica struktury pot

zamiast struktury lepsza byłaby klasa z właściwościami i metodami
i np. klasa realizująca wszystkie niezbędne metody na ww. kontenerze

  1. zastanów się jak liczyć potencjał mając już dane
    https://pl.wikipedia.org/wiki/Potencja%C5%82_grawitacyjny

  2. na razie to początek dlatego wiele jeszcze brakuje
    dobrze jest jednak zawsze napisać sobie :

    • szkielet całego zadania (np. funkcje puste)
    • dodać odpowiednie komentarze

    to pozwala ogarniać projekt i nie pogubić się w realizowanym zadaniu

0

Poradzilem sobie. Temat do usuniecia.

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