C++ - kvadratna jednadzba

poruka: 17
|
čitano: 16.803
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
odjavljen
offline
C++ - kvadratna jednadzba

Molim nekoga da napise program za rjesavanje kvadratne jednadzbe koji u slucaju da je diskriminanta negativna ispisuje kompleksna rjesenja. Hvala.

iPhone user
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ - kvadratna jednadzba

Ne vidim gdje je problem osim u maloj modifikaciji ispisa.

 

Ako je diskriminanta negativna, onda ćemo imati 2 komplexna rješenja:

-b/2a + korijen(-D)/2a i

-b/2a - korijen(-D)/2a i

 

a kao je pozitivna rješenja bi bila

-b/2a + korijen(D)/2a

-b/2a - korijen(D)/2a

 

(primjeti, isto ko i gore, samo nema ovog i)

Tako da jedino što trebaš promijeniti je kako ćeš ispisati rješenja u prvom slučaju

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put čet 27.1.2011 16:58 (Luuka).
17 godina
neaktivan
offline
C++ - kvadratna jednadzba

google is your friend

 

prvo si pitanje prevedeš na engleski i dobiš upit tipa: c++ quadratic equation

 

uglavnom, pogledaj ovdje http://jblanco_60.tripod.com/c_pp_quadratic.html

 
1 0 hvala 0
15 godina
odjavljen
offline
RE: C++ - kvadratna jednadzba

Neće... Stalno izbacuje greske... Sto je tu krivo:

 

#include<stdio.h>
#include<math.h>
int main(void)
{
    float a, b, c, d, x1, x2;
    printf("Unesite kvadratni koeficijent (a): ");
    scanf("%f",&a);
    printf("Unesite linearni koeficijent (b): ");
    scanf("%f",&b);
    printf("Unesite slobodni koeficijent (c): ");
    scanf("%f",&c);
    d=sqrt(b*b-4*a*c);
    if(d>=0) {
    x1=(-b+d)/(2*a);
    x2=(-b-d)/(2*a);
    printf("\nRjesenja zadane jednadzbe su: x1=%f i x2=%f \n \n",x1,x2);
    }
    if(d<0) {
    d=sqrt((b*b-4*a*c)*(-1)) i;
    x1=(-b+d)/(2*a);
    x2=(-b-d)/(2*a);
    printf("\nRjesenja zadane jednadzbe su: x1=%f i x2=%f \n \n",x1,x2);
    }
    return 0;
}

 

Inace, idem u drugi razred srednje skole. Ucim ovo gradivo (c++) tek jedan - jedan i pol mjesec...

iPhone user
15 godina
odjavljen
offline
RE: C++ - kvadratna jednadzba
majkell kaže...

google is your friend

 

prvo si pitanje prevedeš na engleski i dobiš upit tipa: c++ quadratic equation

 

uglavnom, pogledaj ovdje http://jblanco_60.tripod.com/c_pp_quadratic.html

 

Hvala, ali ne zasad. Valjda postoji neki jednostavniji nacin... {#}

iPhone user
16 godina
neaktivan
offline
RE: C++ - kvadratna jednadzba

Greška je što računaš korijen iz diskriminante bez da znaš kakvog je ona predznaka. Korijen nije definiran za negativne brojeve, i tu se desi greška.

Ja bih ovako:

D=b2-4ac

 

if ( D>=0 )

  x1=(-b+sqrt(D) )/(2*a);

  x2=(-b-sqrt(D) )/(2*a);

  printf( ... )

else

  realni_dio = (-b/(2*a) )

  imaginarni_dio = sqrt(-D)/(2*a);

  printf("x1 = %g + %g i", realni_dio, imaginarni_dio);

  printf("x2 = %g + %g i", realni_dio, -imaginarni_dio);

 

 

pišem bez zagrada i ostalog da bolje skužiš. Dakle korijen računam tek kad znam predznak i prema obliku rješenja modoficiram ispis

 

btw ovo nije C++, radiš u čistom C-u. A problem je matematički, ne programerski.

A imaginarna jedinica ( i ) ne postoji u nijednom programskom jeziku (koliko ja znam), zato ju moramo umjetno stvorit :D

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
Poruka je uređivana zadnji put čet 27.1.2011 17:21 (Luuka).
15 godina
odjavljen
offline
RE: C++ - kvadratna jednadzba

Nisam probao, ali mislim da ce raditi.

 

BTW, pise Microsoft Visual C++. Ja znam matematiku, pitajte Horagia. Samo je problem to pretociti u program... :D

iPhone user
16 godina
neaktivan
offline
RE: C++ - kvadratna jednadzba

Nek je taj program u kojem pišeš, ali to kaj pišeš nije C++ nego C ;-)

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
17 godina
neaktivan
offline
C++ - kvadratna jednadzba

C++ bi bio da koristiš jedno od ovoga:

 

enkapsulacija,

skrivanje podataka,

nasljeđivanje,

polimorfizam.

 

Pošto su to značajke OOP-a, a C++ je zamišljen kao OO jezik (točnije, OO nadogradnja C-a). Ako ne koristiš ništa od toga, već radiš s proceduralno strukturiranim modelom, to je C.

 

Nego, kao što je Luuka rekao, prvo provjeri predznak, onda s obzirom na njega računaj. Ako je negativan samo modificiraš ispis (dodaš imaginarni dio), ako je pozitivan onda normalno ispišeš.

Q: a kako se to linux ponasa kad crkne hdd? A: zastekava svakih 60 sec,ali prezivi se
Poruka je uređivana zadnji put čet 27.1.2011 19:03 (1domagoj1).
 
0 0 hvala 0
17 godina
moderator
offline
RE: C++ - kvadratna jednadzba
1domagoj1 kaže...

C++ bi bio da koristiš jedno od ovoga:

 

enkapsulacija,

skrivanje podataka,

nasljeđivanje,

polimorfizam.

 

Pošto su to značajke OOP-a, a C++ je zamišljen kao OO jezik (točnije, OO nadogradnja C-a). Ako ne koristiš ništa od toga, već radiš s proceduralno strukturiranim modelom, to je C.

To nije bas tocno. Vec kad koristis iostream, koristis C++. Vec kad koristis operatore new i delete, koristis C++. Vec kad koristis bool, koristis C++. Vjerojatno ima jos nekih stvari.

 

Takodjer, C++ nije zamisljen kao OO jezik, nego je zamisljen kao jezik koji omogucava programiranje u obje paradigme, pa da si programer moze izabrati koju ce koristiti.

17 godina
neaktivan
offline
C++ - kvadratna jednadzba

Jep jep, istina, također i kad cin i cout koristiš, kužim te ofc :). Ja sam više htio istaknuti OO dio C++-a. Hm, ja sam oduvijek bio u uvjerenju da je C++ nastao kao OO nadogradnja C-u, tj. da se C-u doda taj dio koji mu nedostaje, a ne zato da si možeš izabrati hoćeš OOP ili proceduralno...

Q: a kako se to linux ponasa kad crkne hdd? A: zastekava svakih 60 sec,ali prezivi se
 
0 0 hvala 0
17 godina
moderator
offline
RE: C++ - kvadratna jednadzba

Što sad da ti čovjek kaže na ovo... Da, C++ je nastao kao OO nadogradnja C-u, dakle  dodao  mu je taj dio koji mu nedostaje. A ne da je promijenio C u totalno OO jezik, kao što je recimo Java, gdje su sve objekti. U C++-u ti možeš kombinirati obje paradigme - možeš pola programa napisati proceduralno, pola OOP. C++ je pokušao zadržati što je moguće veću kompatibilnost s C-om, tako da se postojeći programi napisani u C-u mogu bez izmjena ili uz male izmjene kompajlirati u njemu, što je korisno programerima koji su iskusni u C-u, dok friškim programerima omogućava da iskoriste OO paradigmu.

17 godina
neaktivan
offline
C++ - kvadratna jednadzba

A, pa to sve znam, malo si me zbunio s onim, "da si čovjek može odabrati kak hoće pisati", mislim, ako hoćeš proceduralno možeš i u C-u bez problema, ne treba ti C++ za to.

Q: a kako se to linux ponasa kad crkne hdd? A: zastekava svakih 60 sec,ali prezivi se
 
0 0 hvala 0
17 godina
moderator
offline
RE: C++ - kvadratna jednadzba
1domagoj1 kaže...

A, pa to sve znam, malo si me zbunio s onim, "da si čovjek može odabrati kak hoće pisati", mislim, ako hoćeš proceduralno možeš i u C-u bez problema, ne treba ti C++ za to.

To si sad napisao kao da treba posebno nabavljati C++ kompajler, ili kao da i inače ljudi ne programiraju u C++ razvojnim alatima. Zašto ne bi koristio C++ razvojni alat/kompajler, pa ako ti zatreba neka osobina C++ jezika koju C nema, jednostavno - radiš kao i do tada? Mislim... Visual C++, Borland C++Builer ili pak za akademsku zajednicu obavezan DevC++ (za one koji nemaju licence za VC++) - sve su to C++-i. Zašto ne bi iskoristio ono što već imaš?

17 godina
neaktivan
offline
C++ - kvadratna jednadzba

You got me there ;). A istina, malo sam se nespretno izrazio.

Q: a kako se to linux ponasa kad crkne hdd? A: zastekava svakih 60 sec,ali prezivi se
 
0 0 hvala 0
15 godina
odjavljen
offline
RE: C++ - kvadratna jednadzba

Danas sam uspio napraviti ciljani program... {#} Pa ako ce trebati nekome:

 

#include<stdio.h>
#include<math.h>
int main(void)
{
    float a, b, c, d, x1, x2;
    printf("Unesite kvadratni koeficijent (a): ");
    scanf("%f",&a);
    printf("Unesite linearni koeficijent (b): ");
    scanf("%f",&b);
    printf("Unesite slobodni koeficijent (c): ");
    scanf("%f",&c);
    d=b*b-4*a*c;
    if(d>=0) {
    x1=(-b+sqrt(d))/(2*a);
    x2=(-b-sqrt(d))/(2*a);
    printf("\nRjesenja zadane jednadzbe su: x1=%f i x2=%f \n \n",x1,x2);
    }
    if(d<0) {
    float m, n;
    m=-b/2*a;
    n=sqrt(d*(-1))/2*a;
    printf("\nRjesenja zadane jednadzbe su: x1=%f+%fi i x2=%f-%fi \n \n",m,n,m,n);
    }
    return 0;
}

 

Hvala svima na pomoci. {#}

iPhone user
16 godina
neaktivan
offline
RE: C++ - kvadratna jednadzba

Sad kad si napravio program koji radi probaj se malo igrat sa ispisom :D

 

npr kad je d==0 onda će postojat jedno dvojstruko rješenje, pa bi to mogao biti poseban slučaj.

kod slučaja d<0 ružno je ispisati 0+ -1i, puno bi ljepše bilo ispisati samo -i.

 

pa recimo ako se unese a=0, onda je bezveze rješavati kvadratnu jednadžbu kad se radi o običnoj linearnoj koja ima jedno rješenje.

 

I slično :D Ako imaš volje, to bi bio idući korak prema putu ka skroz funkcionalnom programu :D

http://manutd-croatia.com/forum/index.php ... forum i udruga navijača Manchester Uniteda...
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice