[ FallenAngelX @ 27.01.2009. 19:16 ] @
Pišem seminarski rad sa strukturama kao temom.
Molim sve one koji mogu da mi pošalju rešenja zadataka za rad sa strukturama.
[ Aleksandar Ilić @ 27.01.2009. 19:39 ] @
Je l' možemo da vidimo dokle si stigo ako nije problem? Koje su ti teze i slično?

[Ovu poruku je menjao Aleksandar Ilić dana 27.01.2009. u 20:54 GMT+1]
[ FallenAngelX @ 28.01.2009. 14:04 ] @
Ovako izgleda sadrzaj u najkracim crtama. Mozda nesto dodam, videcu.


Strukture
1 Deklaracija strukture
1.1 Promenljive tipa strukture
1.2 Inicijalizacija strukture
1.3 Struktura unutar strukture
2 Rad sa strukturama
2.1 Operator tacka
2.2 Struktura i funkcije
3 Strukture i pokazivaci
3.1 Operator strelica (->)
3.2 Slozeni izrazi
4 typedef
5 Unija


Literaturu sam skupio, nesto sa neta, nesto iz biblioteke, samo jos nekoliko test primera. Ne moraju da budu previse slozeni.



[Ovu poruku je menjao FallenAngelX dana 28.01.2009. u 20:39 GMT+1]
[ Aleksandar Ilić @ 28.01.2009. 17:48 ] @
Program učitava koordinate temena trougla i računa površinu i obim.
Code:
#include <stdio.h>
#include <math.h>

struct tacka
{
  int x;
  int y;
};

float razdaljina(struct tacka a, struct tacka b)
{
  return sqrt((a.x - b.x) * (a.x - b.x)  + (a.y - b.y) * (a.y - b.y));
}

float obimTrougla(struct tacka a, struct tacka b, struct tacka c)
{
  return razdaljina(a, b) + razdaljina (a, c) + razdaljina (b, c);
}

float povrsinaTrougla(struct tacka a, struct tacka b, struct tacka c)
{
  float poluobim, str1, str2, str3;

  poluobim = obimTrougla(a, b, c)/2;
  str1 = razdaljina(a, b);
  str2 = razdaljina(a, c);
  str3 = razdaljina(b, c);

  return sqrt(poluobim * (poluobim - str1) * (poluobim - str2) * (poluobim - str3));
}

int main()
{
  struct tacka a, b, c;
  float p, o;
 
  printf("Unesite koordinate temena A: ");
  scanf("%d %d", &a.x, &a.y);
  printf("Unesite koordinate temana B: ");
  scanf("%d %d", &b.x, &b.y);
  printf("Unesite koordinate temena C: ");
  scanf("%d %d", &c.x, &c.y);

  p = povrsinaTrougla(a, b, c);
  o = obimTrougla(a, b, c);

  printf("Povrsina = %f, Obim = %f\n", p, o);
}


Isti zadatak kao prethodni, s tim što ćemo sada kreirati strukturu trougao koja će sadržati temena, površinu i obim. Napisaću samo delove koji se razlikuju.
Code:
#include <stdio.h>
#include <math.h>

struct tacka
{
  int x;
  int y;
};

struct trougao
{
  struct tacka A;
  struct tacka B;
  struct tacka C;
  float povrsina;
  float obim;
};

//Funkcije kao u prethodnom primeru

int main()
{
  struct trougao ABC;
 
  printf("Unesite koordinate temena A: ");
  scanf("%d %d", &ABC.A.x, &ABC.A.y);
  printf("Unesite koordinate temena B: ");
  scanf("%d %d", &ABC.B.x, &ABC.B.y);
  printf("Unesite koordinate temena C: ");
  scanf("%d %d", &ABC.C.x, &ABC.C.y);

  ABC.povrsina = povrsinaTrougla(ABC.A, ABC.B, ABC.C);
  ABC.obim = obimTrougla(ABC.A, ABC.B, ABC.C);

  printf("Povrsina = %f, Obim = %f\n", ABC.povrsina, ABC.obim);
}


Primer s funkcijom koja vraća strukturu kao rezulat. Izostavio sam funkcije i deklaracije iz prvog/drugog primera.
Code:
struct trougao unesiPodatke(struct tacka a, struct tacka b, struct tacka c)
{
  struct trougao ABC;
  
  ABC.A = a;
  ABC.B = b;
  ABC.C = c;
  ABC.povrsina = povrsinaTrougla(a, b, c);
  ABC.obim = obimTrougla(a, b, c);
  
  return ABC;
}

int main()
{
  struct tacka A, B, C;
  struct trougao ABC;
 
  printf("Unesite koordinate temena a: ");
  scanf("%d %d", &A.x, &A.y);
  printf("Unesite koordinate temena b: ");
  scanf("%d %d", &B.x, &B.y);
  printf("Unesite koordinate temena c: ");
  scanf("%d %d", &C.x, &C.y);
  
  ABC = unesiPodatke(A, B, C);
  
  printf("Povrsina = %f, Obim = %f\n", ABC.povrsina, ABC.obim);
}



Ako budem imao vremena, napisaću i neke primere s pokazivačima.
[ FallenAngelX @ 28.01.2009. 19:43 ] @
Mnogo ti hvala za ovo. ;-)