/* Name: LetterFrequency Copyright: 2009 Author: Yong Joseph Bakos Date: 24/10/09 Description: https://csci261.mines.edu/csci261/MinesQuestion/LetterFrequencyByFunction */ #include #include #include #include #include "letterfrequencies.h" using namespace std; int main() { const int ALPHA_LOWER = 'a'; const int ALPHA_UPPER = 'z'; const int ALPHA_RANGE = ALPHA_UPPER - ALPHA_LOWER + 1; char c; int frequencies[ALPHA_RANGE] = {0}; string text; int idxleast(0), idxmost(0), idxsecond_to_most(0); ifstream data_file("INPUT.TXT"); if (!data_file) { cerr << "There was a problem opening the data file." << endl; system("PAUSE"); exit(1); } // while (data_file >> c) { // if ((c < ALPHA_LOWER || c > ALPHA_UPPER)) { // continue; // } // frequencies[c - ALPHA_LOWER]++; // } if(!getline(data_file, text, char(0))) { exit(1); } for(int i = 0; i < text.length(); i++) { if( text[i] >= ALPHA_LOWER && text[i] <= ALPHA_UPPER ) { frequencies[text[i] - ALPHA_LOWER]++; } } for (int i = 0; i < ALPHA_RANGE; i++) { if (frequencies[i] < frequencies[idxleast]) { idxleast = i; } } for (int i = 0; i < ALPHA_RANGE; i++) { if (frequencies[i] > frequencies[idxmost]) { idxmost = i; } } int idxtmpmax(0); for (int i = 0; i < ALPHA_RANGE; i++) { if (i == idxmost) continue; if (frequencies[i] >= frequencies[idxtmpmax] && frequencies[i] <= frequencies[idxmost]) { idxtmpmax = i; idxsecond_to_most = i; } } cout.width(25); cout << "Least frequent letter: "; cout.width(3); cout << char(idxleast + ALPHA_LOWER) << endl; cout.width(25); cout << "2nd to most frequent: "; cout.width(3); cout << char(idxsecond_to_most + ALPHA_LOWER) << endl; cout.width(25); cout << "Most frequent letter: "; cout.width(3); cout << char(idxmost + ALPHA_LOWER) << endl; system("PAUSE"); return 0; }