Imam problem sa jednim zadatkom iz objektno orjentiranog programiranja. Trebam napraviti program koji izračunava površinu peterokuta?
Ok... U cemu je problem tocno?
Imam problem sa jednim zadatkom iz objektno orjentiranog programiranja. Trebam napraviti program koji izračunava površinu peterokuta?
Ok... U cemu je problem tocno?
program neće da mi proradi,nikako ne znam pravilno napraviti,površina četverokuta mi ide,al peterokut ne znam a hitno mi treba
program neće da mi proradi,nikako ne znam pravilno napraviti,površina četverokuta mi ide,al peterokut ne znam a hitno mi treba
Pa ok, stavi kod ovdje, kako ocekujes da ti pomognemo ako ne postavis kod i tocno kazes sto ti stvara problem.
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
class tocka{
public:
float x,y;
void unos (){
cout << "Unesi x koordinatu ";
cin >> x;
cout << "Unesi y koordinatu ";
cin >> y;
}
void ispis(){
cout << "(" << x << "," << y << ") ";
}
};
float duljina(tocka P, tocka K) {
return sqrt((K.x-P.x)*(K.x-P.x)+(K.y-P.y)*(K.y-P.y)); }
float povrsina(){
float a,b,c,s;
a=duljina(B,C);
b=duljina(A,C);
c=duljina(A,B);
s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));}
void unos(){
cout << "Unos prvog vrha " << endl;
A.unos();
cout << "Unos drugog vrha " << endl;
B.unos();
cout << "Unos treceg vrha " << endl;
C.unos();
}
void ispis(){
A.ispis();
B.ispis();
C.ispis();
cout << endl;
}
};
class cetverokut {
public:
trokut P,D;
tocka V1,V2,V3,V4;
void unos(){
cout << "Unos prvog vrha "<< endl;
V1.unos(); V1.ispis(); cout << endl;
cout << "Unos drugog vrha "<< endl;
V2.unos(); V2.ispis(); cout << endl;
cout << "Unos treceg vrha "<< endl;
V3.unos(); V3.ispis(); cout << endl;
cout << "Unos cetvrtog vrha "<< endl;
V4.unos(); V4.ispis(); cout << endl;
P.A=V1; P.B=V2; P.C=V4; D.A=V4; D.B=V2; D.C=V3;
}
float povrsina(){
return P.povrsina()+D.povrsina();
}
};
int main(int argc, char *argv[])
{
cetverokut Q;
Q.unos();
cout << "Povrsina iznosi "<< Q.povrsina()<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
još mi treba program koji izračunava površinu peterokuta,nadam se da je sad jasno šta tražim.
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
class tocka{
public:
float x,y;
void unos (){
cout << "Unesi x koordinatu ";
cin >> x;
cout << "Unesi y koordinatu ";
cin >> y;
}
void ispis(){
cout << "(" << x << "," << y << ") ";
}
};
float duljina(tocka P, tocka K) {
return sqrt((K.x-P.x)*(K.x-P.x)+(K.y-P.y)*(K.y-P.y)); }
float povrsina(){
float a,b,c,s;
a=duljina(B,C);
b=duljina(A,C);
c=duljina(A,B);
s=(a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));}
void unos(){
cout << "Unos prvog vrha " << endl;
A.unos();
cout << "Unos drugog vrha " << endl;
B.unos();
cout << "Unos treceg vrha " << endl;
C.unos();
}
void ispis(){
A.ispis();
B.ispis();
C.ispis();
cout << endl;
}
};
class cetverokut {
public:
trokut P,D;
tocka V1,V2,V3,V4;
void unos(){
cout << "Unos prvog vrha "<< endl;
V1.unos(); V1.ispis(); cout << endl;
cout << "Unos drugog vrha "<< endl;
V2.unos(); V2.ispis(); cout << endl;
cout << "Unos treceg vrha "<< endl;
V3.unos(); V3.ispis(); cout << endl;
cout << "Unos cetvrtog vrha "<< endl;
V4.unos(); V4.ispis(); cout << endl;
P.A=V1; P.B=V2; P.C=V4; D.A=V4; D.B=V2; D.C=V3;
}
float povrsina(){
return P.povrsina()+D.povrsina();
}
};
int main(int argc, char *argv[])
{
cetverokut Q;
Q.unos();
cout << "Povrsina iznosi "<< Q.povrsina()<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
još mi treba program koji izračunava površinu peterokuta,nadam se da je sad jasno šta tražim.
Pet točaka: A, B, C, D, E
Treba napraviti tri trokuta
F, G, H
sa sljedećim koordinatama
F.A, F.B, F.C - prvi trokut
G.B, G.C, G.D - drugi trokut
H.B, H.D, H.E - treći trokut
Tebe u biti muci matematika, a ne programiranje.
Vidim iz koda da su ti koordinate vrhova poznate, ako imas poznate koordinate povrsinu mozes izracunati pomocu Gaussove formule za povrsinu. Imaj na umu da algoritam nece funkcionirati za peterokut koji prelazi sam preko sebe (slika).
Ne muči me matematika,nego programiranje u tom nisam najbolja,a to mi je bio zadatak za ispit kojeg nisam znala uraditi,pa ako mi netko može pomoći da ga skros uradi bila bih veoma zahvalna hitno mi treba
Ne muči me matematika,nego programiranje u tom nisam najbolja,a to mi je bio zadatak za ispit kojeg nisam znala uraditi,pa ako mi netko može pomoći da ga skros uradi bila bih veoma zahvalna hitno mi treba
Ma vidim, da, zato nisi ni otvorila link koji sam ti dao? Ako si u ovom zadatku za cetverokut znala pohraniti vrhove tog cetverokuta onda znas pohraniti i vrhove peterokuta, upotrijebiti formulu (to je u biti najveci izazov) i izracunati povrsinu. Nije komplicirano.
zadatak koji sam poslala nisam baš ja uradila sama za trokut jesam al za četverokut ne,zato mi pomoć hitno i treba :/
S obzirom da nisam nesto pretjerano ucio za sutrasnji ispit iz elektronike, a sad vise niti nema smisla, evo ti nabrzaka sklepano, da se to jos nadograditi i ljepse napisati - ostavljam za vjezbu.
#include <iostream>
#include <vector>
class Point
{
private:
int x;
int y;
public:
void setPoint()
{
std::cout << "Unesite x koordinatu\n";
std::cin >> x;
std::cout << "Unesite y koordinatu\n";
std::cin >> y;
}
int getX() { return x; }
int getY() { return y; }
};
class Pentagon
{
private:
std::vector<Point> polygon;
double area;
public:
void setPentagon()
{
std::cout << "Unesite koordinate vrhova peterokuta u smjeru suprotnom od kazaljke na satu\n";
for (int i = 0; i < 5; ++i)
{
polygon.push_back(Point());
polygon[i].setPoint();
}
}
void calculateArea()
{
area = 0;
for (int i = 0; i < 4; ++i)
{
area = area + ((polygon[i].getX() * polygon[i + 1].getY()) - (polygon[i].getY() * polygon[i + 1].getX()));
}
area = (area + ((polygon[4].getX() * polygon[0].getY()) - (polygon[4].getY() * polygon[0].getX()))) / 2;
std::cout << "Povrsina peterokuta iznosi: " << area << std::endl;
}
};
int main()
{
Pentagon peterokut;
peterokut.setPentagon();
peterokut.calculateArea();
return 0;
}
Bez problema se da prosiriti i na n-terokut. Naravno, kao sto rekoh, peterokut se ne smije preklapati sam sa sobom te povrsina nuzno ne mora ispasti pozitivna, tako da se treba uzeti apsolutna vrijednost, to takoder ostavljam tebi za vjezbu.
Trebam napraviti program
Upravo tako!
Hvala ti puno. Studiram na dislociranom studiju uz rad tako da nismo puno naučili zbog premalo predavanja,a mnogo se traži zato i imam ovakve probleme. Ovaj ću zadatak ostaviti za rezerve svejedno ću pokušati i sama napraviti da naučim. još jedanput hvala.
Hvala ti puno. Studiram na dislociranom studiju uz rad tako da nismo puno naučili zbog premalo predavanja,a mnogo se traži zato i imam ovakve probleme. Ovaj ću zadatak ostaviti za rezerve svejedno ću pokušati i sama napraviti da naučim. još jedanput hvala.
Postoji "hvala" gumb.
Unos u smjeru kazaljke na satu, rastavljanjem na trokute
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
class Tocka
{
public:
double x, y;
Tocka()
{
}
};
class Trokut
{
private:
double a, b, c, s;
public:
Trokut(Tocka A, Tocka B, Tocka C)
{
a = sqrt((C.x - B.x) * (C.x - B.x) + (C.y - B.y) * (C.y - B.y));
b = sqrt((C.x - A.x) * (C.x - A.x) + (C.y - A.y) * (C.y - A.y));
c = sqrt((B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y));
s = (a + b + c)/2;
}
double povrsina()
{
return sqrt(s * (s-a) * (s-b) * (s-c));
}
};
class Peterokut
{
private:
Tocka A[5];
public:
Peterokut()
{
}
void unos()
{
for(int i = 0; i < 5; i++)
{
cout<< "Unesi " << i + 1 << "." << " tocku: ";
cin>> A[i].x >> A[i].y;
}
}
double povrsina()
{
Trokut F(A[0], A[1], A[4]);
Trokut G(A[1], A[3], A[4]);
Trokut H(A[1], A[2], A[3]);
return F.povrsina() + G.povrsina() + H.povrsina();
}
};
int main()
{
Peterokut peterokut;
peterokut.unos();
cout<< peterokut.povrsina() << endl;
return 0;
}
hvala floki i tebi,pošla sam napraviti tvoj primjer al kod pokretanja programa javlja mi grešku kod forumule za izračun.
hvala floki i tebi,pošla sam napraviti tvoj primjer al kod pokretanja programa javlja mi grešku kod forumule za izračun.
Hm, pokrenuo sam u VS 2012, radi, a testirao na primjreru wiki gdje je domagoj dao gausa i rezultat je ok.
Javlja grešku kod funkcije sqrt(). Uključi biblioteku math.h
Javlja grešku kod funkcije sqrt(). Uključi biblioteku math.h
Cudno jelde? Pa ukljuci je:
#include<math.h>
Stvarno vam se sve mora crtati...
Žalosno al istinito da se doslovno mora "crtati" zahvaljujući našem profi koji nas nije ničem naučio a traži "ne moguće" od nas i kad sve napravim meni ne računa površinu korstim c++ staru verziju njom se služimo.C:\Dev-Cpp\devcpp.exe
meni i uz math.h ne radi,traži da unesem koordinate i kad ih unesem ni traga od površine samo me vrati u cod,a radila sam u dev c++
meni i uz math.h ne radi,traži da unesem koordinate i kad ih unesem ni traga od površine samo me vrati u cod,a radila sam u dev c++
Pokrene se program, uneseš koordinate, on izračuna, tebi ispiše, ali ti ne vidiš, jer čim ti ispiše program se ugasi, što je i logično jer je obavio sve što treba.
Prije vraćanja nule iz main funkcije, moraš nekako zaustaviti program da se ne ugasi, neki deklarišu još jednu varijablu pa čekaju njezin upis, ali najsretnije rješenje bi bilo preko system funkcije. Znači prije retrun 0, dodaj system("PAUSE");.
Hvala proradio je
U stvari, kod te verzije dev c++ ima problema sa naredbom system("pause")
Kud ovo koristiti za OOP, koliko sam vidio nema intellisense.
Meni nije htjelo zadržati prozor nego ovako:
#include <conio.h>
#include <iostream>
#include <cmath>
using namespace std;
class Tocka
{
public:
double x, y;
Tocka()
{
}
};
class Trokut
{
private:
double a, b, c, s;
public:
Trokut(Tocka A, Tocka B, Tocka C)
{
a = sqrt((C.x - B.x) * (C.x - B.x) + (C.y - B.y) * (C.y - B.y));
b = sqrt((C.x - A.x) * (C.x - A.x) + (C.y - A.y) * (C.y - A.y));
c = sqrt((B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y));
s = (a + b + c)/2;
}
double povrsina()
{
return sqrt(s * (s-a) * (s-b) * (s-c));
}
};
class Peterokut
{
private:
Tocka A[5];
public:
Peterokut()
{
}
void unos()
{
for(int i = 0; i < 5; i++)
{
cout<< "Unesi " << i + 1 << "." << " tocku: ";
cin>> A[i].x >> A[i].y;
}
}
double povrsina()
{
Trokut F(A[0], A[1], A[4]);
Trokut G(A[1], A[3], A[4]);
Trokut H(A[1], A[2], A[3]);
return F.povrsina() + G.povrsina() + H.povrsina();
}
};
int main(int argc, char *argv[])
{
Peterokut peterokut;
peterokut.unos();
cout<< peterokut.povrsina() << endl;
getch();
return 0;
}
U stvari, kod te verzije dec c++ ima problema sa naredbom system("pause")
Misliš MinGW 3.4.2 kompajler s kojim DevCpp po defaultu dolazi ima problema? Pa nije nemoguće, to je sada već jako star kompajler i pitanje je kako se ponaša na ičemu modernijem od WinXP (na kojem radi kako treba, čisto da se razumijemo).
Taj se dio može popraviti samo treba ručno izmijeniti kompajler, ili jednostavno koristiti Orwell DevCpp koji, između ostalog, dolazi i sa modernim kompajerom.
A tu se povlači i pitanje funkcije system. Da bi pause radio, shell mora podržavati tu komandu. Već je gro puta spominjano da system("pause") nije portabilan način sprječavanja zatvaranja konzole.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
cout<< "Hello world";
system("PAUSE");
return EXIT_SUCCESS;
}
Kad lupim F9, prozor ne ostaje, mada je ovdje sve po defaultu projekta osim pozdrava.
Inače moj OS je win 7.
A to znači samo jedno, od kud ovaj program na faksu.
I naravno, zašto bih uopće petljao s ovim, VS ne traži prekide, on to radi sam, i onaj besplatni.
Neću pokretati vjerske ratove, ali studenti će na vježbe nositi laptopove sa win 8, a ovaj će ih tjerati da koriste IDE sa XP-a.
Čudne li situacije.
Kad lupim F9, prozor ne ostaje, mada je ovdje sve po defaultu projekta osim pozdrava.
S kojim to, ovim starim ili i novim kojeg sam linkao?
I mislio sam da je Win 7 u pitanju, i to vjerojatno 64 bitni, jesam li u pravu?
Kao što rekoh, star kompajler tko zna do kakve zbrke dođe sa linkanjem standardne biblioteke, trebalo bi provući kroz neki assembly level debugger da bi se moglo skužiti u čemu je zapravo problem, to je jedini način. Ali o tom potom. Nije vrijedno truda.
Inače se slažem da bi se u školama trebalo koristiti nešto što jednostavno radi. Klincima učenje ne bi trebalo dodatno otežavati i borba sa zastarjelim alatom koji više ne radi kao nekad. Amateri poput mene si mogu dozvoliti zajebanciju sa takvim alatima, ali netko tko je ozbiljno u tome ne bi trebao.
Kad lupim F9, prozor ne ostaje, mada je ovdje sve po defaultu projekta osim pozdrava.
S kojim to, ovim starim ili i novim kojeg sam linkao?
I mislio sam da je Win 7 u pitanju, i to vjerojatno 64 bitni, jesam li u pravu?
Kao što rekoh, star kompajler tko zna do kakve zbrke dođe sa linkanjem standardne biblioteke, trebalo bi provući kroz neki assembly level debugger da bi se moglo skužiti u čemu je zapravo problem, to je jedini način. Ali o tom potom. Nije vrijedno truda.
Da, skužio sam da je do OS-a, upravo koji si rekao win 7 64 bit.
Problem je što navede na krivi trag, dadne po defaultu system("pause"), pa sam mislio da izbacuje negdje kod klasa, dok nisam defaultni projekt testirao.
Inače, to je sa dev c++ 4.9.9.2.
mi smo još uvijek zaostali u tome,pa se ne morate ni čuditi zašto neke stvari ne znam( iako bih naravo trebala) al to mi je bio zadatak za ispit kojeg moram znati :/
Code::Blocks sam zadrzi prozor, a i dolazi s najnovijim MinGW-om.
Code::Blocks sam zadrzi prozor, a i dolazi s najnovijim MinGW-om.
Code::Blocks me u zadnje vrijeme jako živcira. Samo nailazim na bugove. Da ne spominjem startup vrijeme...
Nažalost trenutno sam zaglavio s njime.