[C] Formiranje trougla

Teme vezane za console/GUI programiranje u C/C++ jeziku
4 post(ov)a • Stranica: 1/1.

[C] Formiranje trougla

PostPostao/la nemesis » 16 ruj 2013, 15:00

Definisati tip TACKA kojim se reprezentuje tacka u x0y koordinatnom sistemu (svaka tacka ima odgovarajucu slovnu oznaku, te dvije realne koordinate).

Definisati tip TROUGAO kojim se reprezentuje trougao u x0y koordinatnom sistemu (svaki trougao cine tri tacke koje predstavljaju vrhove trougla).

Napisati program koji sa standardnog ulaza ucitava tri tacke, a zatim formira trougao od te tri tacke, pa izracunava i ispisuje njegovu povrsinu i obim.

Za ucitavanje tacke treba definisati i koristiti funkciju ciji je prototip:
TACKA citaj();

Za formiranje trougla treba definisati i koristiti funkciju ciji je prototip:
void trougao(TACKA, TACKA, TACKA, TROUGAO *);

Za izracunavanje udaljenosti izmedju dvije tacke treba definisati funkciju ciji je prototip:
float udaljenost(TACKA, TACKA);

Za izracunavanje i ispis povrsine i obima trougla treba definisati i koristiti funkciju ciji je prototip:
void pio(TROUGAO);

prilicno zamrsen zadatak, nikako da ga skontam, ako moze pomoc bio bih jako zahvalan
evo sta sam do sad uradio

c code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define KV(x) (x)*(x)

typedef struct tac{
float x,y;
}TACKA;

typedef struct tro{
float a,b,c;
}TROUGAO;

TACKA citaj();
void trougao(TACKA,TACKA,TACKA,TROUGAO *);
float udaljenost(TACKA,TACKA);
void pio(TROUGAO);

main()
{
float a,b,c;
TACKA A=citaj();

printf("udaljenost izmedju tacaka je: ");



system("pause");
}
TACKA citaj(){
TACKA tac;

printf("ucitaj tacku a: ");
scanf("%f %f",&tac.x,&tac.y);
printf("ucitaj tacku b: ");
scanf("%f %f",&tac.x,&tac.y);
printf("ucitaj tacku c: ");
scanf("%f %f",&tac.x,&tac.y);
return tac;
}
float udaljenost(TACKA a, TACKA b){
TACKA tac;
float d;
d=sqrt(KV(a.x-b.x)+KV(a.y-b.y));
return(d);
}
void trougao(TACKA A,TACKA B,TACKA C,TROUGAO *D){
TROUGAO tro;
tro.a=udaljenost(B,C);
tro.b=udaljenost(A,C);
tro.c=udaljenost(A,B);
(*D)=tro.a+tro.b+tro.c;
}
void pio(TROUGAO){

}
Zadnja izmjena: gagiD; 18 stu 2013, 20:17; ukupno mijenjano 3 put/a.
Razlog: čitljivost

Re: [C] Formiranje trougla

PostPostao/la Armin » 16 ruj 2013, 17:35

Zadatak je poprilično jednostavan, samo radi dio po dio.

Prije svega, kreiraj osnovne strukture, TACKA i TROUGAO na osnovu postavke zadatka. Zatim prouči matematski kako se sve računa da bi ti bilo lakše definisati potrebne funkcije.

Npr.
Udaljenost dviju točaka u ravnini određenih Kartezijevim koordinatama slika i slika je
slika


Dakle, za obim možeš jednostavno izračunati sve tri udaljenosti i sabrati. Budući da će trougao vjerovatno bit raznostranični, nađi formule za računanje površine raznostraničnog trougla i primijeni ih u problemu.

To su neke upute koje bi trebao pratit.
"Ne žalim što su drugi pokrali moje ideje. Žalim što nemaju svoje"
Nikola Tesla

Re: [C] Formiranje trougla

PostPostao/la nemesis » 16 ruj 2013, 17:46

c code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define KV(x) (x)*(x)

typedef struct {
float x,y;

}TACKA;

typedef struct {
TACKA a,b,c;
}TROUGAO;

TACKA citaj();
void trougao(TACKA,TACKA,TACKA,TROUGAO *);
float udaljenost(TACKA,TACKA);
void pio(TROUGAO);

main()
{
TACKA a,b,c;
a=citaj();
b=citaj();
c=citaj();
TROUGAO t;
trougao(a,b,c,&t);
pio(t);

system("pause");
}
TACKA citaj(){
TACKA tac;
printf("ucitaj tacku: ");
scanf("%f %f",&tac.x,&tac.y);
return tac;
}
float udaljenost(TACKA a, TACKA b){
//float d;
//d=sqrt(KV(a.x-b.x)+KV(a.y-b.y));

return sqrt(KV(a.x-b.x)+KV(a.y-b.y));;
}
void trougao(TACKA A,TACKA B,TACKA C,TROUGAO *D){

D->a=A;
D->b=B;
D->c=C;
}
void pio(TROUGAO t){
double obim,povrsina;
obim=udaljenost(t.a,t.b)+udaljenost(t.b,t.c)+udaljenost(t.a,t.c);
printf("obim = %f\n",obim);
}

Re: [C] Formiranje trougla

PostPostao/la gagiD » 16 ruj 2013, 18:51

Ims i ovu formulu za racunanje P trougla preko koordinata tacka vrhova:

slika


4 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.