Dobrý den, mám úkol, na kterém jsem se zasekl a potřebuji pomoc.
--napište program, který přečte ze souboru Tx.txt x-y souřadnice jednotlivých (pro t3.txt 221) bodů v rovině.
1) Vypište všechny neopakovatelné trojice bodů (pořadová čísla od 1 do 221), které tvoří vrcholy rovnostranného trojúhelníku.
2) K nalezeným trojúhelníkům vypište, kolik ze všech zadaných bodů se nachází uvnitř plochy daného rovnostranného trojúhelníku – vrcholy se nepočítají.
Pokyny a doporučení:
Při porovnávání délky stran počítejte s nepřesností výpočtu v oboru desetinných čísel, tzn., že pro rovnost stran a,b
- neplatí a=b
- ale abs(a-b) < chyba výpočtu (např. 0.01)
Nalezené trojúhelníky (čísla vrcholů) zapisujte do dynamického pole (polí).
Nejsem si jistý, jestli ty fory na prohledavani jsou spravne,tak pisu o radu... Dekuji
#include<stdio.h>
#include<string.h>
#define MAX 81
main(){
int i,j;
char pole1[MAX],jmeno[MAX];
int po_ra=0,po_sl=2,cislo,y,pocet=0;
double (*pole)[po_sl],vz1,vz2,vz3;
FILE *fr;
printf("Zadej jmeno souboru (bez pripony): ");
scanf("%s",jmeno);
strcat(jmeno,".txt");
if((fr=fopen(jmeno,"r"))==NULL){
printf("Soubor se nepodario otevrit");
return 0;
}
while(fgets(pole1,MAX,fr)!=NULL)
po_ra++;
fseek(fr,0L,SEEK_SET);
pole=(double (*)[po_sl]) malloc(po_sl*po_ra*sizeof(double));
for(i=0;i<po_ra;i++)
for(j=0;j<po_sl;j++)
fscanf(fr,"%lf",&pole[i][j]);
for(i=0;i<po_ra;i++){
putchar('\n');
for(j=0;j<po_sl;j++)
printf("%.2lf ",pole[i][j]);
}
for(i=0;i<po_ra;i++){
vz1=sqrt((pole[0][0]-pole[i+1][0])*(pole[0][0]-pole[i+1][0])+(pole[0][1]-pole[i+1][1])*(pole[0][1]-pole[i+1][1]));
for(j=0;j<po_ra-1;j++){
vz2=sqrt((pole[0][0]-pole[j+2][0])*(pole[0][0]-pole[j+2][0])+(pole[0][1]-pole[j+2][1])*(pole[0][1]-pole[j+2][1]));
for(y=0;y<po_ra-2;y++){
vz3=sqrt((pole[1][0]-pole[y+2][0])*(pole[1][0]-pole[y+2][0])+(pole[1][1]-pole[y+2][1])*(pole[1][1]-pole[y+2][1]));
if((abs(vz1-vz2)<0,01)&&(abs(vz2-vz3)<0,01)&&(abs(vz1-vz3)<0,01))
printf("\nRovnoramenny trojuhelnik se vzdalenosti %lf---%lf---%lf",vz1,vz2,vz3);}
}
}
}