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 ";
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.