Struktury, chodzenie po płaszczyźnie

0

Cześć,
Poniżej umieszczam polecenie które muszę wykonać.
Czytałem zarówno na wikibooks, jak i na tutejszym forum co to są konkretnie te struktury, jednakże nie mam pomysłu, narzędzi merytorycznych do wykonania tego zadania.

  1. Zdefiniuj w pliku agents.h typ struct agent do reprezentowania agenta oraz
    wpisz deklaracje poniższych funkcji.
  2. Zdefiniuj funkcję struct agent newagent(int x, int y), która tworzy nowego
    agenta znajdującego się w zadanym miejscu.
  3. Zdefiniuj funkcję void north(struct agent *a), która wykonuje danym agen-
    tem krok na północ.
    4.Zdefiniuj funkcję double distance(struct agent a1, struct agent a2), która
    oblicza odległość euklidesową między dwoma agentami a1 i a2.
    // jest ich więcej ale wystarczą te 4 główne

Odnośnie punktu (1.) mój plik wygląda tak:

struct agent;
struct agent newagent(int x, int y);
void north(struct agent *a);
void south(struct agent *a);
void east(struct agent *a);
void west(struct agent *a);
double distance(struct agent a1, struct agent a2);

Odnośnie punktu (2.) drugiego to mam coś takiego, nie wiem czy poprawnie:

struct agent newagent(int x, int y)

{ 
   struct agent Bob;

   Bob.x = x;
   Bob.y = y;
   return Bob;

}

1

To co na razie zrobiłeś wygląda poprawnie. Dziwne, że distance ma działać na kopiach, ale jak tak mówi zadanie to tak rób.

0

Tylko jest problem bo nie wiem jak ma szię ruszać nasz "agent" co zrobić

1
void north( struct agent* a )
{
  if ( a != NULL )
  {
    ++(a->y);     // albo --(a->y), zależy w którą "stronę" współrzędne mają rosnąć
  }
}

0
aolo23 napisał(a):

to jak tu policzyć dystans między agentami?

Pitagorsa?

Pierwiastek z pitagorasa daje odległość czyli przekątną, a ta potocznie zwana odległością :P

0

Ja rozumiem, że dla was to jest trywialne zagadnienie, ale sprecyzuje się.Ja nie "czuję " tych struktur i nie wiem za bardzo co gdzie jak jest zmienną co z czym połączyć itd.
Co do rzeczy matematycznych to nie ma problemów, jednakże jak to ująć w kod źródłowy.

0

Zbyt bardzo przejmujesz się, programowanie to istna matematyka, ja nie rozumiałem matematyki, ale dzięki programowaniu tzn. praktycznemu wykorzystaniu matematyki w programowaniu zrozumiałem.

To jest piękne żeby matematykę zrozumieć same podstawy pythona starczą i możan kombinować, wykresy generować itp.

0

No to u mnie to wygląda potrafię robić skomplikowane rzeczy na zwykłej kartce ale jestem na początkującym poziomie programowania i nie umiem niektórych rzeczy robić;)
Ale nie uciekając od tematu, potrzebuję funkcji która liczy odległość między agentami :/

0

Ile razy mam ci tłumaczyć.

masz odległość x od obu postaci, i podległość y od obu postaci z tego liczysz pitagorasa i masz odległość.

Łatwiej się nie da !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1
float CalcDistance(const Point* p1, const Point* p2)
{
   float dist;
   if ( p2->x == p1->x ) { dist = abs( p2->y - p1->y ); }         // jeśli punkty mają identyczną wartość w osi X to odległość wynosi |y2-y1|
   else if ( p2->y == p1->y ) { dist = abs( p2->x - p1->x ); }    // jeśli punkty mają identyczną wartość w osi Y to odległość wynosi |x2-x1|
   else {
      Point p3;                  // tworzysz tymczasowy punkt, który utworzy nam trójkąt prostokątny
      p3.x = p1->x;
      p3.y = p2->y;
      int a = abs( p2->x - p3.x );     // długość pierwszej przyprostokątna
      int b = abs( p1->y - p3.y );     // długość drugiej przyprostokątna
      dist = sqrtf( a * a + b * b );   // przeciwprostokątna czyli odległość między punktami
  }
  return dist;
}

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