0

I have to read lines from a text file and reformat them so that the first letter is uppercase and the rest are lowercase. I did that with no problem. also i needed to count the total words in the file, and did that easily.,but i also need to count the digits and punctuation marks in the file.For some reason i cant get it to work.

can anyone help with a good way to count the digits and puntuation marks( '.', '?', '!')

#include <iostream>
#include <string>
#include <cctype>
#include <fstream>

using namespace std; //separated by exactly 1 blank.
void reformat(string&);
void getfilename(string,string&);
void printFile(string);
void word_count(int);
void line_count(int);

int main()
{
  char ch;
  ifstream input;
  ofstream output;
  string filename, word;
  int numWords = 0;
  int lines = 0;
  int digits = 0;
  int punct = 0;
  char next;
  getfilename("input",filename);
  input.open(filename.c_str());
  printFile(filename);
  input >> word;
  while (!input.eof())
    {
      reformat(word);
      cout << word;
      input.get(ch);
      if(ch == '\n')
        {
      cout << endl;
        }
      else
        cout << " ";

      numWords ++;
      input >> word;
        }

  word_count(numWords);
  line_count(lines);
  cout << "Digit count: " << digits << endl;
  cout << "Punctuation count: "<< punct << endl;
return 0;
}


void reformat(string& word)
{
  int wlen;
  wlen = word.length();
  word[0] = toupper(word[0]);
  for (int i=1; i<wlen; i++)
    word[i] = tolower(word[i]);
void printFile(string filename)
{
  cout << "Input file name: " << filename << endl;
  cout << endl;
}

void getfilename(string filetype,string& filename)
{

  cout << "Enter name of " << filetype << " file\n";
  cin >> filename;
}
void word_count(int numWords)
{
  cout << endl;
  cout << "Word count: " << numWords << endl;
}
void line_count(int lines)
{
  cout << "Sentence count: " << lines << endl;
}
2
Contributors
1
Reply
2
Views
6 Years
Discussion Span
Last Post by WaltP
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.