#include #include #include #include #include #define MAXZNAK 16 #define MAXPOMBUF 20 int debug = 0; double dekodujcislo( char *jakou); int main (int pocarg, char *argum[] ) { int i,j; int jevzorek; unsigned char pombuf[MAXPOMBUF+1]; float amplisum; float vzorek; switch (pocarg) { case 1: { printf("Musi nasledovat jedno float - maximalni hodnota sumu \n"); printf("Tento sum se nasledne pricte k vzorkum na standardnim vstupu \n"); printf("a muze to mit opsnu -d - debug pred cisly\n" ); printf("ocekavam vzorky float na standardnim vstupu - nejlepe cat \n\n"); return 0; break; } case 3: { strcpy(pombuf,argum[1]); if( (pombuf[0] == '-' ) && ( pombuf[1] == 'd' ) ) { printf("mameopsnu\n"); debug = 1; } else { printf("Problem s opsnou a poctem cisel\n"); break; } } case 2: { strcpy(pombuf," "); strncat(pombuf,argum[1+debug],MAXPOMBUF-4); if(debug) printf("cislo je --%s--\n",pombuf); amplisum = dekodujcislo(pombuf); if(debug) printf("amplituda sumu je %20.10f \n" , amplisum); break; } default: { printf("Chybne zadano - nespravny pocet parametru \n"); printf("Koncim. Zavolej si to bez param. tam je help\n"); return 0; break; } } srand(time(NULL)); jevzorek = 1; while(1) { jevzorek = scanf("%f",&vzorek); if( jevzorek !=1 ) break; vzorek = vzorek + (((float ) (2* rand() - RAND_MAX )) / RAND_MAX ) * amplisum ; printf("%f\n",vzorek); } return 0; } double dekodujcislo( char *jakou) { unsigned char buf[MAXPOMBUF+1]; unsigned char predteckou[MAXPOMBUF+1]; unsigned char zateckou[MAXPOMBUF+1]; int i,j; int jetamtecka = 0; int predt; double cislo; double mocnina; j=0; for (i=0;i<10;i++) buf[i] = 0; strncpy(buf,jakou,MAXPOMBUF); predteckou[0] = 0; zateckou[0] = 0; for(i=0; i<=MAXPOMBUF; i++) { if(buf[i] == ',') buf[i] = '.'; } for(i=0;i<=MAXPOMBUF;i++) { if (buf[i] >= '0' && buf[i]<='9') break; buf[i] = ' '; /* znak, ktery neni cislice, prepisu mezerou !!!! ne, tohle je kravina !!! to ale take znamena, ze nezadas zapornou teplotu ! to proste skonci u prvni cislice */ } if(i == MAXPOMBUF ) { printf("V retezci neni zadna cislice ! \n"); return 0; } predt = 1; j=0; for(i=0;i<=MAXPOMBUF;i++) { if(predt) { if(buf[i] == '.' ) { predt = 0; predteckou[i] = 0; continue; } predteckou[i] = buf[i]; } else { if( !buf[i] ) { zateckou[j] = 0; break; } zateckou[j] = buf[i]; j++; } } if(debug) printf("predteckou je --%s--\n",predteckou ); if(debug) printf("zateckou je --%s--\n",zateckou ); if(debug) printf("j je %d \n",j ); mocnina = 1.0; for(i=0;i