File: Stare vježbe/vjezbe13/80__komandna_linija_2.c
/* 80__komandna_linija_2.c ----- Program sluzi za rjesavanje kvadratne jednadzbe a*x^2+b*x+c==0. Koeficijenti se ucitavaju s komandne linije, a u slucaju da ih se ne unese dovoljno na komandnoj liniji, dodatno se ucitavaju s tastature. */ #include <stdio.h> #include <math.h> #include <stdlib.h> int kvad_jed(double a, double b, double c, double *x1, double *x2, double *y1, double *y2) { double d; d=b*b-4*a*c; if (d==0) { *x1 = *x2 = -b / (2*a); return 1; } else if (d>0) { *x1 = (-b - sqrt(d) ) / (2 * a); *x2 = (-b + sqrt(d) ) / (2 * a); return 2; } else { *x1 = *x2 = -b / (2*a); *y1 = - ( *y2 = (sqrt(-d) / (2*a) ) ); return -2; } } int main(int argc, char *argv[]){ double koef[3], re1, im1, re2 , im2; int i; /* Ucitavamo koeficijente s komandne linije */ for(i=0; i<argc-1; i++) { koef[i] = atof(argv[i+1]); } /* Ukoliko je uneseno manje od tri koeficijenta na komandnoj liniji, preostale dodatno ucitavamo s tastature */ for(; i<3; i++) { printf("Unesite %d. koef. u kvadratnoj jednadzbi: ", i +1); scanf("%lf", koef+i); } i = kvad_jed(koef[0], koef[1], koef[2], &re1, &re2, &im1, &im2); printf("\nKvadratna jednadzba %.3fx^2 + %.3fx + %.3f == 0", koef[0], koef[1], koef[2]); printf("\nima %d %s rjesenj%c:\n", abs(i), (i<0 ? "kompleksna" : ""), (i==1 ? 'e' : 'a')); if(i==1) else if (i==2) printf("\tx1=%lf,\n\tx2=%lf\n", re1, re2 ); else printf("\tx1=%lf+i*%lf,\n\tx2=%lf+i*%lf\n", re1, im1, re2, im2 ); return 0; }
|