Pereiti prie turinio

C++ mokyklinė užduotis


Rekomenduojami pranešimai

Sveiki, neseniai pradėjau pats mokytis programavimo ir užkliuvau už vienos užduoties. Niekaip nesuprantu kodėl if'as rodo netinkamą atsakymą, nors programa veikia gerai. Dėkui iš anksto. :)

 

http://pastebin.com/HdkkTENZ

 

Sąlyga:

 

http://jjanonis.su.lt/it/3/c++/R.Burbaite.J.Blonskis.V.Buksnaitis.-.Siuolaikiskas.zvilgsnis.i.programavima.C++.2011.LT.pdf

 

(35 psl, 5prt)

 

P.S Gal tuo pačiu turit kokių pastabų, ką darau negerai, ką būtų galima padaryti paprasčiau? Būtų labai naudinga.

Redagavo Adomce123
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Visu pirma, kaip Paulas minejo, reiktu patvarkyti tavo funkcijas.

Antra, del problemu su if(), tai cia yra problema kuri atsiranda, kai yra apvalinami skaiciai su trupmenom (daugiau gali pasiskaityti: http://stackoverflow...0335601/4099033)

 

Turejau kiek laiko ir parasiau savo varianta, kaip butu galima ispresti:

#include <fstream>
#include <iostream>
#include <math.h>
#include <float.h>

using namespace std;

struct coord {
double x, y;
} taskai[4]; // A=0, B=1, C=2, D=3

double atstumas(coord c1, coord c2)
{
return sqrt(pow((c1.x-c2.x),2) + pow((c1.y-c2.y),2));
}

double plotas(coord c1, coord c2, coord c3)
{
double a = atstumas(c1,c2),
       b = atstumas(c1,c3),
       c = atstumas(c2,c3);
double p = (a+b+c) / 2;
return sqrt(p*(p-a)*(p-b)*(p-c));
}

int main()
{
char tVardai[] = {'A','B','C','D'};

// Tasku koordinates
for (int i=0; i<4; i++) {
	cout << "Iveskit tasko " << tVardai[i] << " koordinates:" << endl;
	cin >> taskai[i].x >> taskai[i].y;
}

// surandam plotus
double plotasABC = plotas(taskai[0], taskai[1], taskai[2]);

double plotasABD = plotas(taskai[0], taskai[1], taskai[3]),
  		plotasBCD = plotas(taskai[1], taskai[2], taskai[3]),
  		plotasACD = plotas(taskai[0], taskai[3], taskai[2]);

double plotuSuma = plotasABD+plotasBCD+plotasACD;

if (fabs(plotasABC-plotuSuma) < 0.0001)
	cout << "Taskas yra trikampio viduje";
else
	cout << "Taskas yra trikampio isoreje";
}

 

Iveskit tasko A koordinates:
10 20
Iveskit tasko B koordinates:
20 -5
Iveskit tasko C koordinates:
-5 -4
Iveskit tasko D koordinates:
5 5
Taskas yra trikampio viduje

Redagavo Imago
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...