#include #include #define SLOUPCE 20 double zatizeni (int Nn, double ztrat); double ztraty (int pocet, double zatizeni); double mocnina (double neco, double beco); long long int faktorial (int x); int main (int neco, char *par[]) { double y,ztraty[SLOUPCE],*mp; int N,k,j=2; mp = malloc(sizeof(float)*20); //error zpravy if (par[1]==NULL || par[2]==NULL) { printf ("Zadejte vsechny pozadovane parametry"); return 0; } N = atoi(par[1]); if (N<1) { printf("Musi byt kladne cislo"); return 0; } while (par[j]!=NULL) { ztraty[j-2]=atof(par[j]); if (ztraty[j-2]<0 || ztraty[j-2]>100) { printf("Neplatne hodnoty"); return 0; } j++; } j=2; //tisknuti vysledku printf("ztr| %5.1f%% |", ztraty[j-2]*100); while(par[j+1]!=NULL) { printf(" %5.1f%% |", ztraty[j-1]*100); j++; } printf("\n"); j=2; printf(" N "); while (par[j+1]!=NULL) { j++; } printf("|\n"); j=2; printf(" 1 |"); while(par[j]!=NULL) { printf(" %7.3f |", ztraty[j-2]); j++; } printf("\n"); for(k=2; k<=N; k++) { printf("%2d |",k); j=2; while(par[j]!=NULL) { y=zatizeni(k,ztraty[j-2]); printf(" %7.3f |", y); j++; } printf(" \n "); } printf ("\n\n"); return 0; } //podpgrogramy: //zatizeni double zatizeni (int Nn, double ztrat) { double horni=0, ztratyy,dolni=0,zat=0; horni=Nn; while(1) { zat = (horni+dolni) /2; ztratyy = ztraty(Nn, zat); if ( ztratyy>ztrat ) horni = zat; if ( ztratyy=(ztrat-0.001) && ztratyy<=(ztrat+0.001) ) break; } return zat; } //ztraty double ztraty (int pocet, double zatizeni) { double ztr, suma=0; int i; for (i=0; i<=pocet; i++) { suma = suma + (mocnina(zatizeni,i)/faktorial(i)); } ztr= (mocnina(zatizeni,pocet)/faktorial(pocet)) /suma; return ztr; } //faktorial long long int faktorial (int x) { long long int b=1,c; if (x==0) b=1; for (c=1; c<=x; c++) { b=b*c; } return b; } //mocnina double mocnina (double neco, double beco) { int Nco=2; double vysledek=neco; if (beco==0) return 1; if (beco==1) return beco; while (Nco<=beco) { vysledek = vysledek * neco; Nco++; } return vysledek; }