Dvourozmerne pole, prace s textovym dokumentem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dvourozmerne pole, prace s textovym dokumentem – C / C++ – Fórum – Programujte.comDvourozmerne pole, prace s textovym dokumentem – C / C++ – Fórum – Programujte.com

 

matesomg0
Duch
30. 1. 2017   #1
-
0
-

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);}
        }

        }




    }


Nahlásit jako SPAM
IP: 188.75.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 53 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý