Omoguciti da program moze da radi sa trouglovima. Trougao je odredjen ako su date koordinate svih njegovih temena. omoguciti izracunavanje obima, povrshine trougla i da li data tacka Z pripada trouglu. U glavnom programu se unosi niz trouglova, a kao rezultat je potrebno ispisati koji trouglovi sadrze datu tacku Z (ukoliko je naveden opcioni argument- a). Ukoliko nijem treba pronaci koji trougao ima najvecu povrsinu.
Evo nekog koda sto sam iskombinovao iz par zadataka :D ne mogu da napravim da mi radi proveravanje pripadnosti tacke trouglu, ( poslednji deo maina (obelezicu ga crvenom
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct{
int x,y;
} tacka;
typedef struct{
tacka t1,t2,t3;
} trougao;
float duzina(tacka t1,tacka t2){
int dx = t1.x - t2.x;
int dy = t1.y - t2.y;
return sqrt(dx*dx + dy*dy);
}
float povrsina(trougao r){
float a = duzina(r.t1, r.t2);
float b = duzina(r.t2, r.t3);
float c = duzina(r.t1, r.t3);
float s = (a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));
}
float obim(trougao r){
float a = duzina(r.t1, r.t2);
float b = duzina(r.t2, r.t3);
float c = duzina(r.t1, r.t3);
return a+b+c;
}
int pripada(trougao r, tacka t4){
int T3 = (r.t3.y - r.t1.y)*(r.t2.x - r.t1.x) - (r.t2.y - r.t1.y) * (r.t3.x - r.t1.x);
int T4 = (t4.y - r.t1.y)*(r.t2.x - r.t1.x) - (r.t2.y - r.t1.y) * (t4.x - r.t1.x);
return (T3 * T4 > 0);
}
void ucitaj_tacku(tacka* t){
printf("Unesite x koordinatu: ");
scanf("%d", &t->x);
printf("Unesite y koordinatu: ");
scanf("%d", &t->y);
}
void ucitaj_trougao(trougao* r){
printf("Unesite teme A: \n");
ucitaj_tacku(&r->t1);
printf("Unesite teme B: \n");
ucitaj_tacku(&r->t2);
printf("Unesite teme C: \n");
ucitaj_tacku(&r->t3);
}
void ispisi_trougao(trougao r){
printf("Teme A: (%d,%d) ",r.t1.x,r.t1.y);
printf("Teme B: (%d,%d) ",r.t2.x,r.t2.y);
printf("Teme C: (%d,%d) ",r.t3.x,r.t3.y);
}
int main()
{
trougao r[100];
tacka t;
int i,n,dim=0,g,a;
float f,max=0.0;
fflush(stdin);
printf("Uneti argument a? (D/N)");
scanf("%c",&a);
printf("Unesi tacku Z: \n ");
ucitaj_tacku(&t);
printf("Koliko trouglova ucitavate: ");
scanf("%d", &n);
for(i=0;i<n;i++){
printf("%d \n",i);
ucitaj_trougao(&r[i]);
[red] f=povrsina(trougao r);
if (f>max){
max=f;
}
else if (max>f){
g=i;
}[/red]
}
[red] if(a=='D'){
printf("Tacka Z pripada trouglovima: ");
for(i=0;i<n;i++){
if(pripada(r.t1,r.t2,r.t3,t) && pripada(r.t2,r.t3,r.t1,t) && pripada(r.t1,r.t3,r.t2,t)){
printf("%d ",i);
}
}
}
else printf(" \n %d. trougao ima najvecu povrsinu",g);
[/red]
return 0;
}
[Ovu poruku je menjao Mihajlo Cvetanović dana 07.01.2010. u 21:53 GMT+1]