#include #include int main(void) { char sn_ratio[20]; float ratio ; /*ratio is the sn_r expressed as an actual ratio, not dB */ char bwidth[20]; float bandwidth; float channels; char chan[20]; float bits_per_sec; float dB; /*get the nums*/ printf("How many Hz of bandwidth is available?\n"); if (fgets(bwidth,20,stdin) == NULL) { exit(1);} printf("What's the signal/noise ratio (NOT in db, eg 30dB=1000) ?\n"); if (fgets(sn_ratio,20,stdin) == NULL) { exit(1); } printf("How many channels exhibit these parameters in your system?\n"); if (fgets(chan,20,stdin) == NULL) { exit(1); } /*conv to values*/ ratio=atoi(sn_ratio); bandwidth=atoi(bwidth); channels=atoi(chan); dB= log10(ratio)*10; printf(" B/W : %f Hz , SNR : %f dB\n\n",bandwidth, dB); /*shannon's law is expressed in terms of log2(x) hence fiddly conversion*/ bits_per_sec= (log10(ratio +1) / log10 (2)) * bandwidth; printf("Total bits per second per channel is %.2f bps\n\n", bits_per_sec); printf("Total throughput for combined channels is %.2f kbps \n", ((bits_per_sec * channels)/1024) ); printf("which is equal to %.2f Megabits/sec \n", (((bits_per_sec * channels)/1024)/1024)); printf("which is equal to %.2f Megabytes/sec \n", (((bits_per_sec * channels)/1024)/1024)/8); return 0; }