Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

how do i validate user name with no numbers and blanks- want to allow space betw

ID: 638449 • Letter: H

Question

how do i validate user name with no numbers and blanks- want to allow space between name eg john joe. also like save stats how to set up a retireveStats

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<fstream>
using namespace std;
bool credits(char name[]);
bool checkUserAnswer(double answer,double result);
char menu(int *totalCorrect,int *totalWrong,double *earning,char name[]);
void updateStats(bool correct,int *totalCorrect,int *totalWrong,double *earning);
void displayStats(int *totalCorrect,int *totalWrong,double *earning,char name[]);
double generateAddition(double a,double b);
double generateSubstraction(double a,double b);
double generateMultiplication(double a,double b);
double generateDivision(double a,double b);
void saveStats(int *totalCorrect,int *totalWrong,double *earning,char name[]);
int main()
{

   char ch;
   char name[50];
   int totalCorrect=0,totalWrong=0;
   double earning=0.0;

   if(credits(name))
   {  
       while(true)
       {
       ch = menu(&totalCorrect,&totalWrong,&earning,name);
       if(ch=='n'||ch=='N')
       break;
       }  
   }
   else
   {
       cout<<"See you! ";
   }
   return 0;
}

bool credits(char name[])
{
   char ch;
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******* ******* ";
   cout<<"******* TheMathGame ******* ";
   cout<<"******* ******* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<" ";
   cout<<"y/Y to continue , or any other char to exit ";
   cin>>ch;
   if(ch=='y'||ch=='Y')
   {
       cout<<"Enter your name and press <ENTER> ";
       cin>>name;
      
       return true;
   }
   else
   {
       return false;
   }

}

char menu(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   char ch;
   bool correct;

cout<<"*****CHOOSE A PROBLEM****** ";
cout<<"*************************** ";
cout<<"*************************** ";
cout<<"****** 1. ADD ******* ";
cout<<"****** 2. SUBSTRACT ******* ";
cout<<"****** 3. MULTIPLY ******* ";
cout<<"****** 4. DIVIDE ******* ";
cout<<"****** 5. STATS ******* ";
cout<<"****** 6. SAVE STATS TO FILE ";
cout<<"****** n/N to QUIT ******* ";
cout<<"*************************** ";
cout<<"*************************** ";
cout<<"*************************** ";
   cin>>ch;
  
   int a;
   int b;
  
   do
   {
   a = rand() % 10+1;
   b = rand() % 10+1;
   }
   while(a<b);
  
   double result,answer;
   do
   {
       switch(ch)
       {
      
           case '1':
               result = a+b;
               answer = generateAddition(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
          
           case '2':
               result = a-b;
               answer=generateSubstraction(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
           case '3':
               result = a*b;
               answer=generateMultiplication(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
          
           case '4':
               result = a/b;
               answer=generateDivision(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
           case '5':
               displayStats(totalCorrect,totalWrong,earning,name);
               break;
           case '6':
               saveStats(totalCorrect,totalWrong,earning,name);
               break;
           case 'n':
               cout<<"See you! ";
               return 'n';
           case 'N':
               cout<<"See you! ";
               return 'N';
           default:
               cout<<"Invalid Option, please enter a option! ";
               cout<<" ";
       }
  
   }while(ch=='n'||ch=='N');
  
   return 0;
}

bool checkUserAnswer(double answer,double result)
{
   if(answer == result)
   {
       cout<<"**********RIGHT!*********** ";
       cout<<" ";
       return true;
   }
   else
   {
       cout<<"**********WRONG!*********** ";
       cout<<" ";
       return false;
   }
}

void updateStats(bool correct,int *totalCorrect,int *totalWrong,double *earning)
{
   if(correct)
   {
   *totalCorrect =*totalCorrect+1 ;
   *earning = *earning + 0.05;
   } else {
   *totalWrong = *totalWrong +1;
   *earning = *earning - 0.03;
   }
}

void displayStats(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"*********** "<<name<<" ************* ";
   cout<<"******Total Earnings "<<*earning<<" **** ";
   cout<<"******Total Correct "<<*totalCorrect<<" ***** ";
   cout<<"******Total Wrong "<<*totalWrong<<" ******* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<" ";
}

double generateAddition(double a,double b)
{
   double answer;
   cout<<"*********ADDITION********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" + "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateSubstraction(double a,double b)
{
   double answer;
   cout<<"*******SUBSTRACTION******** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" - "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateMultiplication(double a,double b)
{
   double answer;
   cout<<"*****MULTIPLICATION******** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" * "<<b<< " =? ********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateDivision(double a,double b)
{
   double answer;
   cout<<"*********DIVISION********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" / "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

void saveStats(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   ofstream myfile;
   myfile.open ("stats.txt");
   myfile << "Writing this to a file. ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"***** "<<name<<" ******* ";
   myfile<<"***Total Earnings "<<*earning<<"** ";
   myfile<<"***Total Correct "<<*totalCorrect<<"** ";
   myfile<<"***Total Wrong "<<*totalWrong<<"** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile.close();
   cout<<"Saved Stats to stats.txt successfully ";
}

Explanation / Answer

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<fstream>
#include<cstring>
#include<cstdio>

using namespace std;
bool credits(char name[]);
bool checkUserAnswer(double answer,double result);
char menu(int *totalCorrect,int *totalWrong,double *earning,char name[]);
void updateStats(bool correct,int *totalCorrect,int *totalWrong,double *earning);
void displayStats(int *totalCorrect,int *totalWrong,double *earning,char name[]);
double generateAddition(double a,double b);
double generateSubstraction(double a,double b);
double generateMultiplication(double a,double b);
double generateDivision(double a,double b);
void saveStats(int *totalCorrect,int *totalWrong,double *earning,char name[]);
bool isValidName(char *name[]);

int main()
{

   char ch;
   char name[50];
   int totalCorrect=0,totalWrong=0;
   double earning=0.0;

   if(credits(name))
   {
       while(true)
       {
       ch = menu(&totalCorrect,&totalWrong,&earning,name);
       if(ch=='n'||ch=='N')
       break;
       }
   }
   else
   {
       cout<<"See you! ";
   }
   return 0;
}

bool isValidName(char name[]){
    for(int i=0; i<strlen(name); i++){
        if(!(name[i]>='a' && name[i]<='z') || !(name[i]>='A' && name[i]<='Z') || !(name[i]==' '))
            return false;
    }
    return true;
}

bool credits(char name[])
{
   char ch;
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******* ******* ";
   cout<<"******* TheMathGame ******* ";
   cout<<"******* ******* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<" ";
   cout<<"y/Y to continue , or any other char to exit ";
   cin>>ch;
   if(ch=='y'||ch=='Y')
   {
       cout<<"Enter your name and press <ENTER> ";
       getchar();
       gets(name);
       if(isValidName(name)){
            cout << "Invalid Name"<<endl;
            return false;
       }

       return true;
   }
   else
   {
       return false;
   }

}

char menu(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   char ch;
   bool correct;

cout<<"*****CHOOSE A PROBLEM****** ";
cout<<"*************************** ";
cout<<"*************************** ";
cout<<"****** 1. ADD ******* ";
cout<<"****** 2. SUBSTRACT ******* ";
cout<<"****** 3. MULTIPLY ******* ";
cout<<"****** 4. DIVIDE ******* ";
cout<<"****** 5. STATS ******* ";
cout<<"****** 6. SAVE STATS TO FILE ";
cout<<"****** n/N to QUIT ******* ";
cout<<"*************************** ";
cout<<"*************************** ";
cout<<"*************************** ";
   cin>>ch;

   int a;
   int b;

   do
   {
   a = rand() % 10+1;
   b = rand() % 10+1;
   }
   while(a<b);

   double result,answer;
   do
   {
       switch(ch)
       {

           case '1':
               result = a+b;
               answer = generateAddition(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;

           case '2':
               result = a-b;
               answer=generateSubstraction(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
           case '3':
               result = a*b;
               answer=generateMultiplication(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;

           case '4':
               result = a/b;
               answer=generateDivision(a,b);
               correct=checkUserAnswer(answer,result);
               updateStats(correct,totalCorrect,totalWrong,earning);
               break;
           case '5':
               displayStats(totalCorrect,totalWrong,earning,name);
               break;
           case '6':
               saveStats(totalCorrect,totalWrong,earning,name);
               break;
           case 'n':
               cout<<"See you! ";
               return 'n';
           case 'N':
               cout<<"See you! ";
               return 'N';
           default:
               cout<<"Invalid Option, please enter a option! ";
               cout<<" ";
       }

   }while(ch=='n'||ch=='N');

   return 0;
}

bool checkUserAnswer(double answer,double result)
{
   if(answer == result)
   {
       cout<<"**********RIGHT!*********** ";
       cout<<" ";
       return true;
   }
   else
   {
       cout<<"**********WRONG!*********** ";
       cout<<" ";
       return false;
   }
}

void updateStats(bool correct,int *totalCorrect,int *totalWrong,double *earning)
{
   if(correct)
   {
   *totalCorrect =*totalCorrect+1 ;
   *earning = *earning + 0.05;
   } else {
   *totalWrong = *totalWrong +1;
   *earning = *earning - 0.03;
   }
}

void displayStats(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"*********** "<<name<<" ************* ";
   cout<<"******Total Earnings "<<*earning<<" **** ";
   cout<<"******Total Correct "<<*totalCorrect<<" ***** ";
   cout<<"******Total Wrong "<<*totalWrong<<" ******* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<" ";
}

double generateAddition(double a,double b)
{
   double answer;
   cout<<"*********ADDITION********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" + "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateSubstraction(double a,double b)
{
   double answer;
   cout<<"*******SUBSTRACTION******** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" - "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateMultiplication(double a,double b)
{
   double answer;
   cout<<"*****MULTIPLICATION******** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" * "<<b<< " =? ********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

double generateDivision(double a,double b)
{
   double answer;
   cout<<"*********DIVISION********** ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cout<<"******** "<<a<<" / "<<b<< " =? ********* ";
   cout<<"*************************** ";
   cout<<"*************************** ";
   cin>>answer;
   while (!cin.good())
   {
       cin.clear();
       cin.ignore(100000, ' ');
       cout<<"That's not a number, please enter a number! ";
       cin>>answer;
   }
   return answer;
}

void saveStats(int *totalCorrect,int *totalWrong,double *earning,char name[])
{
   ofstream myfile;
   myfile.open ("stats.txt");
   myfile << "Writing this to a file. ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"***** "<<name<<" ******* ";
   myfile<<"***Total Earnings "<<*earning<<"** ";
   myfile<<"***Total Correct "<<*totalCorrect<<"** ";
   myfile<<"***Total Wrong "<<*totalWrong<<"** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile<<"*************************** ";
   myfile.close();
   cout<<"Saved Stats to stats.txt successfully ";
}