fork download
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4. #include <bitset>
  5.  
  6. using namespace std;
  7.  
  8. void Compress(string, int *, int);
  9. float calcAverage(int *, int);
  10.  
  11. int main(){
  12. const static int bitLength=8;
  13.  
  14. int *data = new int[int(pow(2,bitLength))];//declare memory
  15.  
  16. for(int i=0; i<pow(2,bitLength); i++){//cycle through each binary item
  17. data[i]=bitLength;
  18. Compress(std::bitset<bitLength>( i ).to_string(), data, i);
  19.  
  20. //uncomment the line underneath to see workings
  21. //cout << std::bitset<bitLength>( i ).to_string() << " Has Length of " << data[i] << ", ";
  22. }
  23.  
  24. int Average = calcAverage(data, int(pow(2,bitLength)));
  25.  
  26. cout << "Average length is " << Average << " Over " << pow(2,bitLength) << ' ' << bitLength << " bit numbers"<< endl;
  27.  
  28.  
  29. return 0;
  30. }
  31.  
  32. void Compress(string in, int *data, int upTo){
  33. char current='z';
  34. for(int i=0; i<in.length(); i++){
  35. if(in[i] == current){
  36. data[upTo]--;
  37. }else{
  38. data[upTo]++;
  39. current=in[i];
  40. }
  41. }
  42. }
  43.  
  44. float calcAverage(int *Data, int arraySize){
  45. int Total=0;
  46. for(int i=0; i<arraySize; i++){
  47. Total+=Data[i];
  48. }
  49.  
  50. return float(Total/arraySize);
  51. }
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
Average length is 9 Over 256 8 bit numbers