/ chpercent.cpp
chpercent.cpp
1 #include <iostream> 2 #include <fstream> 3 void printRow(std::string name,double number,double total) { 4 //std::cout<<name<<"\t"<<number<<"\t"<<number/total*100<<"%\n"; 5 std::cout<<number<<"\t"<<name<<"\t"<<number/total*100<<"%\n"; 6 } 7 int main(int l,char** a) { 8 double total=0, 9 uppercase=0,lowercase=0,digits=0, 10 spaces=0,tabs=0, 11 lines=0, 12 openParens=0,closeParens=0, 13 openCurlys=0,closeCurlys=0, 14 openSquares=0,closeSquares=0, 15 openAngles=0,closeAngles=0, 16 periods=0,colons=0,semicolons=0,commas=0, 17 singleQuotes=0,doubleQuotes=0, 18 questionMarks=0,exclamationPoints=0, 19 poles=0,tildes=0,backticks=0,atSigns=0, 20 pounds=0,usdSigns=0,percents=0, 21 carrots=0,andpersands=0,underscores=0, 22 astriks=0,minus=0,plus=0,equals=0, 23 forwardSlash=0,backslash=0; 24 std::string buffer; 25 double i; 26 //std::cout <<std::string(a[l-1]); 27 std::ifstream iFile(a[l-1]); 28 while(getline(iFile,buffer)) { 29 for (i=0;i<buffer.size();i++) { 30 switch(buffer[i]) { 31 case'A':case'B':case'C':case'D':case'E':case'F':case'G':case'H':case'I':case'J':case'K':case'L':case'M':case'N':case'O':case'P':case'Q':case'R':case'S':case'T':case'U':case'V':case'W':case'X':case'Y':case'Z': 32 uppercase++;break; 33 case'a':case'b':case'c':case'd':case'e':case'f':case'g':case'h':case'i':case'j':case'k':case'l':case'm':case'n':case'o':case'p':case'q':case'r':case's':case't':case'u':case'v':case'w':case'x':case'y':case'z': 34 lowercase++;break; 35 case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9': 36 digits++;break; 37 38 case' ':spaces++;break; case'\t':tabs++;break; 39 40 case'(':openParens++;break; case')':closeParens++;break; 41 case'{':openCurlys++;break; case'}':closeCurlys++;break; 42 case'[':openSquares++;break; case']':closeSquares++;break; 43 case'<':openAngles++;break; case'>':closeAngles++;break; 44 45 case'.':periods++;break; case':':colons++;break; case';':semicolons++;break; case',':commas++;break; 46 case'\'':singleQuotes++;break; case'"':doubleQuotes++;break; 47 case'?':questionMarks++;break; case'!':exclamationPoints++;break; 48 case'|':poles++;break; case'~':tildes++;break; case'`':backticks++;break; case'@':atSigns++;break; 49 case'#':pounds++;break; case'$':usdSigns++;break; case'%':percents++;break; 50 case'^':carrots++;break; case'&':andpersands++;break; case'_':underscores++;break; 51 52 case'*':astriks++;break; case'-':minus++;break; case'+':plus++;break; case'=':equals++;break; 53 case'/':forwardSlash++;break; case'\\':backslash++;break; 54 55 default:std::cerr <<"Unknown character \""<<buffer[i]<<"\"\n"; 56 } 57 } 58 total+=buffer.size(); 59 lines++; 60 } 61 printRow("Uppercase",uppercase,total); printRow("Lowercase",lowercase,total); 62 printRow("Spaces ",spaces,total); printRow("Tabs ",tabs,total); printRow("Digits ",digits,total); 63 std::cout<<"\n"; 64 printRow("(",openParens,total); printRow(")",closeParens,total); 65 printRow("{",openCurlys,total); printRow("}",closeCurlys,total); 66 printRow("[",openSquares,total); printRow("]",closeSquares,total); 67 printRow("<",openAngles,total); printRow(">",closeAngles,total); 68 std::cout<<"\n"; 69 printRow(".",periods,total); printRow(":",colons,total); 70 printRow(";",semicolons,total); printRow(",",commas,total); 71 printRow("'",singleQuotes,total); printRow("\"",doubleQuotes,total); 72 printRow("?",questionMarks,total); printRow("!",exclamationPoints,total); 73 printRow("|",poles,total); printRow("~",tildes,total); printRow("`",backticks,total); printRow("@",atSigns,total); 74 printRow("#",pounds,total); printRow("$",usdSigns,total); printRow("%",percents,total); 75 printRow("^",carrots,total); printRow("&",andpersands,total); printRow("_",underscores,total); 76 std::cout<<"\n"; 77 printRow("*",astriks,total); printRow("-",minus,total); 78 printRow("+",plus,total); printRow("=",equals,total); 79 printRow("/",forwardSlash,total); printRow("\\",backslash,total); 80 std::cout<<"\nChars\t"<<total<<"\nLines\t"<<lines<<"\n"; 81 } 82