Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Tacke u oblastima odredjenim presekom krugova

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Tacke u oblastima odredjenim presekom krugova

[ Pregleda: 1800 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milanotye

Član broj: 215578
Poruke: 19
93.87.150.*



Profil

icon [Zadatak] Tacke u oblastima odredjenim presekom krugova11.05.2009. u 14:44 - pre 182 meseci
Zdravo. Pocetnik sam u c++ pa vas zato molim za pomoc. Imam da resim jedan zadatak.
Napisati program kojim se za N tacaka u ravni zadatih koordinatama x i y odredjuje koliko se njih nalazi u oblasti 1, 2, 3 i 4. Ove oblasti odredjene su presekom kruga cija je jednacina (x + 2)² + (y + 2)² = 1 i prave cija je jednacina x + y = -4.
Na izlazu stampati.
OBLAST BROJ TACAKA
1
2
3
4
Ovo sam ja radio, mada ne vunkcionise, nije dobro :(. Treba definisati jednacine oblasti.

#include<iostream>
#include<cmath>
using namespace std;
int main(){
double x,y;
int n, i, ob1, ob2, ob3, ob4;
ob1 = ob2 = ob3 = ob4 = 0;
cout<< "Unesite broj tacaka n \n";
cin>> n;
for(i=1;i<=n;i++){
cout<< "Unesite koordinate"<<i<<".tacke:"<<"\n";
cout<<"x=";
cin>> x;
cout<<"y=";
cin>> y;
if(pow(x + 2,2) + pow(y + 2,2)<1)
if(x + y > -4)
ob4++;
if(x + y >= -4)
ob3++;
if(x + y < -4)
ob2++;
if(x + y <= -4)
ob1++;
}
cout<< "OBLAST \t BROJ TACAKA \n";
cout<< "1\t"<<ob1<<"\n2\t"<<ob2<<"\n3\t"<<ob3<<"\n4\t"<<ob4;

return 0;
}


A evo i slike
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak] Tacke u oblastima odredjenim presekom krugova11.05.2009. u 15:14 - pre 182 meseci
Code:

if(pow(x + 2,2) + pow(y + 2,2)<1)
  if(x + y > -4)
    ob4++;
if(x + y >= -4)
  ob3++;
if(x + y < -4)
  ob2++;
if(x + y <= -4)
  ob1++;


Imas dve nejednacine, i imas 4 moguća slučaja koji te dve nejednačine mogu da stvore. Najelegantnije bi bilo da uvedeš dve bool promenljive koje ti govore da li su nejednačine zadovoljene:

bool u_krugu = ((x + 2) * (x + 2) + (y + 2) * (y + 2) < 1);
bool iznad_prave = (x + y > -4);

Sada inkrementiraš jednu od četiri promenljive u zavisnosti od kombinacije ova dva bool flaga (tebi je ovaj deo malo promašen):

Code:

if (u_krugu)
{
  if (iznad_prave)
    ...
  else
    ...
}
else
{
  if (iznad_prave)
    ...
  else
    ...
}
 
Odgovor na temu

Milanotye

Član broj: 215578
Poruke: 19
93.87.150.*



Profil

icon Re: [Zadatak] Tacke u oblastima odredjenim presekom krugova11.05.2009. u 17:39 - pre 182 meseci
Ja sam vec tako bio uradio i nije bash htelo. Profesor mi reko da radim samo u if petljama i da jednacine kruznice i prave postavim dobro.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: [Zadatak] Tacke u oblastima odredjenim presekom krugova11.05.2009. u 20:31 - pre 182 meseci
Prosto, treba bukvalno da zameniš te dve promenljive u if delovima odgovarajućim izrazima, i to je to. Namerno ne želim na ti dam kompletno rešenje, jer nije valjda u tome poenta.
 
Odgovor na temu

Milanotye

Član broj: 215578
Poruke: 19
93.86.55.*



Profil

icon Re: [Zadatak] Tacke u oblastima odredjenim presekom krugova17.05.2009. u 20:07 - pre 182 meseci
Ja zaboravio da postavim. Uradio sam tj. lepo sam definisao jednacine oblsti
Oblast broj 1: (x + 2)² + (y + 2)² > 1.......i.......x + y < -4
Oblast broj 2: (x + 2)² + (y + 2)² ≤ 1.......i.......x + y < -4
Oblast broj 3: (x + 2)² + (y + 2)² ≤ 1.......i.......x + y ≥ -4
Oblast broj 4: (x + 2)² + (y + 2)² > 1.......i.......x + y ≥ -4

#include<iostream>
#include<cmath>
using namespace std;
int main(){
double x,y;
int n, i, ob1, ob2, ob3, ob4;
ob1 = ob2 = ob3 = ob4 = 0;
cout<< "Unesite broj tacaka n \n";
cin>> n;
for(i=1;i<=n;i++){
cout<< "Unesite koordinate"<<i<<".tacke:"<<"\n";
cout<<"x=";
cin>> x;
cout<<"y=";
cin>> y;
if(((x + 2) * (x + 2)) + ((y + 2) * (y + 2)) < 1)
if(x + y < -4)
ob2++;
else
ob4++;
else if(x + y < -4)
ob1++;
else
ob3++;
}
cout<< "OBLAST \t BROJ TACAKA \n";
cout<< "1\t"<<ob1<<"\n2\t"<<ob2<<"\n3\t"<<ob3<<"\n4\t"<<ob4;

return 0;
}
Hvala vam.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Tacke u oblastima odredjenim presekom krugova

[ Pregleda: 1800 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.