/ 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