Jump to content
informatician

Problema triunghiuri c++

Recommended Posts

Posted

Fisierul text triunghiuri.in contine datele referitoare la N triunghiuri, astfel:

pe prima linie se afla numarul N al triunghiurilor, 0 < N < 100;

pe urmatoarele N linii se gasesc câte sase numere întregi x1, y1, x2, y2, x3, y3, separate prin câte un spatiu, reprezentând coordonatele (x1, y1), (x2, y2) si (x3, y3) ale celor 3 vârfuri ale unui triunghi în planul xOy.

Consideram declararea tipului Punct:

C/C++

typedef struct Punct {

x, y: integer;

};

si prototipul/antetul functiei dist:

C/C++

double dist(Punct A, Punct B);

/C/C++ care:

a) Contine definitia completa a functiei dist, care calculeaza distanta dintre doua puncte din planul xOy ale caror coordonate sunt transmise prin intermediul parametrilor A si B;

B) Determina si afiseaza pe ecran numarul triunghiurilor care au aria mai mare decât o valoare reala citita de la tastatura.

Am incercat o rezolvare, dar nu i-am dat de capat..

Posted

Pai cum sa te astepti sa fii in stare sa programezi daca tu nu stii sa diferentiezi o declaratie de variabile din C++ cu una din Pascal?

Si inca ceva, in C++ nu sunt sigur ca exista typedef struct Punct .Ma refer la typedef, nustiu ce sens are el pe-acolo (da' nu-s 100% sigur ca nu-i bine), totusi merita sa mai verifici odata sursa.

Posted
Pai cum sa te astepti sa fii in stare sa programezi daca tu nu stii sa diferentiezi o declaratie de variabile din C++ cu una din Pascal?

Si inca ceva, in C++ nu sunt sigur ca exista typedef struct Punct .Ma refer la typedef, nustiu ce sens are el pe-acolo (da' nu-s 100% sigur ca nu-i bine), totusi merita sa mai verifici odata sursa.

Auzi, nu eu am scris aceasta problema!Acesta este enuntul, dar mi-am dat seama ca e gresit acuma cand mi-ai zis tu!trebuia sa fie int x,y;..nu x,y:integer;!

Posted
Te-am prins...frauda...:-W

Tu vrei sa faci puncte cu capu' altuia... nu-i frumos!

Este singura problema care nu mi-a iesit, de aceea am cerut ajutor, dar vad ca numai critici mi se aduc.Voi incerca solutionarea problemei!Va rog inchideti topicul.

PS.phreak sunt 100% sigur ca aceea e cerinta, acum am verificat si eu!

Posted

Daca ei nu sunt in stare sa scrie un enunt calumea , eu de ce ar trebui sa fiu in stare sa rezolv aberatiile lor?

@informaticianu : eu n-as scrie nimic si i-as zice profei ca e gresit enuntul.

Posted

@informatician: sa observam situatia din urmatoarea perspectiva: esti la bac, sau un alt examen, si nu reusesti sa faci o problema.. Ce faci? Intrebi prin sala cum sa rezolvi? Daca e munca individuala, sa ramana munca individuala.

Posted
@informatician: sa observam situatia din urmatoarea perspectiva: esti la bac, sau un alt examen, si nu reusesti sa faci o problema.. Ce faci? Intrebi prin sala cum sa rezolvi? Daca e munca individuala, sa ramana munca individuala.

Da corect..voiam doar o sugestie!Oricum o sa-i dau de capat pana la urma.

PS.Oricum aceasta pentru multi NU va fi o munca individuala.

Posted

C++ code by cmiN - 42 lines - codepad

Eroarea este de un epsilon > 0 (->0) (adica daca ii dai ca valoare: x, iar aria unui triunghi va da tot x atunci x de triunghi va fi mai mare ca x introdus ... limita din dreapta)

#include <iostream>
#include <fstream>
#include <math.h>
#define fname "triunghiuri.in"

using namespace std;
struct Punct {
int x, y;
};

double dist(Punct A, Punct
{
return sqrt(pow((B.x - A.x), 2) + pow((B.y - A.y), 2));
}

int main()
{
int n, i, nr = 0;
double val, lat[3], sp;
Punct tgl[3];
cout << "Valoare: ";
cin >> val;
ifstream fin(fname);
fin >> n;
while (n-- > 0) {
for (i = 0; i < 3; i++) {
fin >> tgl[i].x >> tgl[i].y;
}
lat[0] = dist(tgl[0], tgl[1]);
lat[1] = dist(tgl[0], tgl[2]);
lat[2] = dist(tgl[1], tgl[2]);
// Heron
sp = (lat[0] + lat[1] + lat[2]) / 2;
if (sqrt(sp * (sp - lat[0]) * (sp - lat[1]) * (sp - lat[2])) > val) {
nr++;
}
}
fin.close();
cout << nr;
system("pause >nul");
return 0;
}

Posted
C++ code by cmiN - 42 lines - codepad

Eroarea este de un epsilon -> 0 (adica daca ii dai ca valoare: x, iar aria unui triunghi va da tot x atunci x de triunghi va fi mai mare ca x introdus ... limita din dreapta)

#include <iostream>
#include <fstream>
#include <math.h>
#define fname "triunghiuri.in"

using namespace std;
struct Punct {
int x, y;
};

double dist(Punct A, Punct
{
return sqrt(pow((B.x - A.x), 2) + pow((B.y - A.y), 2));
}

int main()
{
int n, i, nr = 0;
double val, lat[3], sp;
Punct tgl[3];
cout << "Valoare: ";
cin >> val;
ifstream fin(fname);
fin >> n;
while (n-- > 0) {
for (i = 0; i < 3; i++) {
fin >> tgl[i].x >> tgl[i].y;
}
lat[0] = dist(tgl[0], tgl[1]);
lat[1] = dist(tgl[0], tgl[2]);
lat[2] = dist(tgl[1], tgl[2]);
// Heron
sp = (lat[0] + lat[1] + lat[2]) / 2;
if (sqrt(sp * (sp - lat[0]) * (sp - lat[1]) * (sp - lat[2])) > val) {
nr++;
}
}
fin.close();
cout << nr;
system("pause >nul");
return 0;
}

Multumesc mult!

Posted

Enuntul nu are nimic , nu confunda c cu pascal pur si simplu e un limbaj de pseudocod mai special,

aria triungiurilor o afli cu formula lui euclid(cu semiperimetrele) mai ai nevoie de o formula care sa iti calculeze lungimea dreptelor si ai terminat(prin cartea de cls 11 sau 12 ceva cu panta:))

poti declara o clasa Dreapta unde in constructor setezi lungimea dreptei si o metoda care iti returneaza valoarea .

public class Dreapta

{ private float Val;

Dreapta(Punct x,Punct y)

{

Val=Calc_Distanta(x,y);

}

public float GetVal()

{

return Val;

}

}

Posted

Am fost la evaluare in educatie , subiectul de clasa a IX - a a fost o gluma , cel mai greu lucru pentru mine a fost sa scriu in pseudocod + nu ma asteptam sa ceara cineva rezolvari la un concurs de informatica de 2 bani pe un site mai mult despre hacking :)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

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



×
×
  • Create New...