[ nikoladjile @ 14.11.2007. 20:25 ] @
Imam velikih problema oko resavanja jednog zadatka.Ako moze neko da ga resi bio bih veoma zahvalan Napraviti program koji koristi funkciju za izracunavanje kvadratne jednacine F(x)=ax^2+bx+c (a,b,c,x) |
[ nikoladjile @ 14.11.2007. 20:25 ] @
[ X Files @ 15.11.2007. 06:25 ] @
Na kakve si probleme naišao? Pokaži kod koji si uradio.
[ nikoladjile @ 15.11.2007. 09:17 ] @
Ja umem da ga uradim ali ne umem preko funkcije
[ X Files @ 15.11.2007. 10:17 ] @
Prva dva pitanje koje sebi treba da postavis su:
1) šta treba da predaš funkciji kao argumente 2) šta funkcija treba da vrati 1) a, b, c 2) resenja kvadratne jednacine u najprostijem obliku analize su x1 i x2, mada tu postoje brojni detalji koji takodje mogu biti smatrani kao pozeljna povratna vrednost funkcije. Uzecemo da funkcija trebada vrati samo x1, x2 (a ti po zelji prosiruj sistem). Pretpostavljam da ti je problem sto povratna vrednost nije prost tip podataka, vec ima 'vise' stvari koje treba upakovati u jednu povratnu vrednost. Tada tipicno pravis strukturu, koja moze da 'upakuje' vise prostih tipova: Code: struct rezultat_kvadratne_jednacine { float x1, x2; // ... ovde se mogu ugraditi i druge informacije i time prosiriti sistem }; Zatim, treba ti funkcija. Jedna od ideja je da prosledis kao argumente: a, b, c i adresu objekata (one strukture od malopre) gde ce rezultati biti smesteni: Code: void funkcija_za_racunanje_kvardatne_jednacine1( float a, float b, float c, rezultat_kvadratne_jednacine *x ) { // ovde treba tvoj kod koji resava x1, x2 // ... i dodeljuje vrednosti strukturi: x->x1 = 2; // <--- ja sam ovde kao sracunao resenja 2 i 4 i dodelio ih objektu za smestanje rezultata x->x2 = 4; } U glavnoj funkciji: Code: int main() { // <--- ovde napises kod za unos a, b, c // zatim kreiras objekat gde ce biti smesteni rezultati: rezultat_kvadratne_jednacine rezultat; // poziv funkcije funkcija_za_racunanje_kvardatne_jednacine1( a, b, c, &rezultat ); cout << rezultat.x1 << "\n"; cout << rezultat.x2 << "\n"; system("PAUSE"); return EXIT_SUCCESS; } [ nikoladjile @ 16.11.2007. 10:54 ] @
Ne mogu nikako preko funkcije da ga uradim.Ja samo znam na ovaj nacinAl bi mogao ti da mi uradis preko funkcije
Code: #include <stdio.h> #include <math.h> main () { double a, b, c, /* Koeficijenti jednacine. */ d, /* Diskriminanta jednacine. */ x1, x2, /* Realni delovi korena. */ y1, y2; /* Imaginarni delovi korena. */ typedef enum { REALNI, DVOSTRUKI, KOMPLEKSNI, LINEARNA, POGRESNA } Vrsta; Vrsta vrsta; /* Vrsta resenja jednacine. */ printf ("Koeficijenti kvadratne jednacine? "); scanf ("%lf%lf%lf", &a, &b, &c); if (a) { d = b * b - 4 * a * c; if (d > 0) { vrsta = REALNI; x1 = (- b + sqrt (d)) / (2 * a); x2 = (- b - sqrt (d)) / (2 * a); } else if (d == 0) { vrsta = DVOSTRUKI; x1 = - b / (2 * a); } else { vrsta = KOMPLEKSNI; x1 = - b / (2 * a); x2 = x1; y1 = sqrt (- d) / (2 * a); y2 = - y1; } } else if (b) { vrsta = LINEARNA; x1 = - c / b; } else vrsta = POGRESNA; switch (vrsta) { case REALNI: printf ("Realni koreni su %.2f i %.2f\n", x1, x2); break; case DVOSTRUKI: printf ("Dvostruki realni koren je %.2f\n", x1); break; case KOMPLEKSNI: printf ("Kompleksni koreni su (%.2f,%.2f) i (%.2f,%.2f)\n", x1, y1, x2, y2); break; case LINEARNA: printf ("Resenje linearne jednacine je %.2f\n", x1); break; case POGRESNA: printf ("Podaci nemaju smisla!\n"); break; } } [Ovu poruku je menjao X Files dana 16.11.2007. u 12:14 GMT+1] [ X Files @ 16.11.2007. 11:32 ] @
Izvini, ali da li vi radite C ili C++ jezik?
Onda nekako ovako /netestirano/ Code: #include <stdio.h> #include <stdlib.h> #include <math.h> // OVO JE STRUKTURA ZA SMESTANJE REZULTATA struct rezultat_kvadratne_jednacine { double x1, x2, y1, y2; enum VrstaKJ { REALNI, DVOSTRUKI, KOMPLEKSNI, LINEARNA, POGRESNA } vrsta; }; // OVO JE FUNKCIJA ZA RACUNANJE KJ I SMESTANJE REZULTATA U STRUKTURU ZA REZULTAT void funkcija_za_racunanje_kvardatne_jednacine( double a, double b, double c, rezultat_kvadratne_jednacine *x ) { double d; /* Diskriminanta jednacine. */ if ( a ) { d = b * b - 4 * a * c; if ( d > 0 ) { x->vrsta = rezultat_kvadratne_jednacine::REALNI; x->x1 = (- b + sqrt (d)) / (2 * a); x->x2 = (- b - sqrt (d)) / (2 * a); } else if ( d == 0 ) { x->vrsta = rezultat_kvadratne_jednacine::DVOSTRUKI; x->x1 = - b / (2 * a); } else { x->vrsta = rezultat_kvadratne_jednacine::KOMPLEKSNI; x->x1 = - b / (2 * a); x->x2 = x->x1; x->y1 = sqrt (- d) / (2 * a); x->y2 = - x->y1; } } else if ( b ) { x->vrsta = rezultat_kvadratne_jednacine::LINEARNA; x->x1 = - c / b; } else { x->vrsta = rezultat_kvadratne_jednacine::POGRESNA; } } int main () { double a ,b, c; printf ("Koeficijenti kvadratne jednacine? "); scanf ("%lf%lf%lf", &a, &b, &c); // OVDE ZELIMO REZULTATE rezultat_kvadratne_jednacine rezultat; // OVO JE POZIV FUNKCIJE SA PROSLEDJEMON STRUKTUROM GDE TREBA DA BUDU REZULTATI funkcija_za_racunanje_kvardatne_jednacine( a, b, c, &rezultat ); // OVO JE ANALIZA REZULTATAT IZ STRUKTURE I IZVESTAVANJE switch ( rezultat.vrsta ) { case rezultat_kvadratne_jednacine::REALNI: printf ("Realni koreni su %.2f i %.2f\n", rezultat.x1, rezultat.x2); break; case rezultat_kvadratne_jednacine::DVOSTRUKI: printf ("Dvostruki realni koren je %.2f\n", rezultat.x1); break; case rezultat_kvadratne_jednacine::KOMPLEKSNI: printf ("Kompleksni koreni su (%.2f,%.2f) i (%.2f,%.2f)\n", rezultat.x1, rezultat.y1, rezultat.x2, rezultat.y2); break; case rezultat_kvadratne_jednacine::LINEARNA: printf ("Resenje linearne jednacine je %.2f\n", rezultat.x1); break; case rezultat_kvadratne_jednacine::POGRESNA: printf ("Podaci nemaju smisla!\n"); break; } system("PAUSE"); return EXIT_SUCCESS; } [ nikoladjile @ 16.11.2007. 20:36 ] @
E hvala ti puno.CAR si!!!
Nismo se bili razumeli ja radim u jeziku C(moja greska) HVALA PUNO Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|