1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#include <iostream>
#include <cstring>
#include <string>
#include <cctype>
#include <fstream>
using namespace std;
void openInputFile(ifstream & , string str);
void alphaSort(char[], int);
int countChars(char * , char);
int main() {
char ch;
ifstream infile;
int k = 0;
int l = 0;
int p = 0;
int size;
const int ALPHA_SIZE = 26;
const int NUM_SIZE = 10;
char arrAlphaPtr[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i','j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
char arrDigitPtr[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
char arrPuncPtr[] = {'?', '+', '!', '.', ','};
char alphaArr[100];
char numArr[100];
char puncArr[5];
string inFileName = "filename";
openInputFile(infile, inFileName);
infile >> ch;
while (infile) {
if (isalpha(ch)) {
ch = tolower(ch);
alphaArr[k++] = ch;
} else if (isdigit(ch)) {
numArr[l++] = ch;
} else if (ispunct(ch)) {
puncArr[p++] = ch;
}
infile >> ch;
}
infile.close();
cout << endl;
alphaSort(alphaArr, k);
for (int j = 0; j < ALPHA_SIZE; j++) {
cout << arrAlphaPtr[j] << ": " << countChars(alphaArr, arrAlphaPtr[j]) << "\t";
}
cout << endl << endl;
for (int h = 0; h < NUM_SIZE; h++) {
cout << arrDigitPtr[h] << ": " << countChars(numArr, arrDigitPtr[h]) << "\t";
}
cout << endl << endl;
for (int g = 0; g < p; g++) {
cout << "'" << arrPuncPtr[g] << "': " << countChars(puncArr, arrPuncPtr[g]) << "\t";
}
cout << endl;
return 0;
}
void openInputFile(ifstream & infile, string inFileName) {
if (!infile) {
cout << " Error, file does not exist!";
exit(12);
} else
infile.open("filename");
}
void alphaSort(char alphaArr[], int k) {
int alphaScan, minIndex;
double minElem;
for (alphaScan = 0; alphaScan < (k - 1); alphaScan++) {
minIndex = alphaScan;
minElem = alphaArr[alphaScan];
for (int index = alphaScan + 1; index < k; index++) {
if (alphaArr[index] < minElem) {
minElem = alphaArr[index];
minIndex = index;
}
}
alphaArr[minIndex] = alphaArr[alphaScan];
alphaArr[alphaScan] = minElem;
}
}
int countChars(char * strPtr, char ch) {
int times = 0;
while ( * strPtr != '\0') {
if ( * strPtr == ch)
times++;
strPtr++;
}
return times;
}
|