Below is a program that I have written for a college course. Eveything works gre
ID: 3627759 • Letter: B
Question
Below is a program that I have written for a college course. Eveything works great but my professor said he did not want use to use global varables, if we did he would not accept it. Apprently I have used a global varable for "temp" and am a little stuck on how to change it to a local. Can someone please help.#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
void displayMenu();
void getMenuSelection(char&);
void getStartEndAndIncrement(int&,int&,int&);
void CtoF(int,int,int,int&);
void FtoC(int,int,int,int&);
void displayCtoFTable(int,int,int);
void displayFtoCTable(int,int,int);
double *temp;
int main()
{
char choice;
int start=0;
int end=0;
int increment=0;
int count=0;
do
{
displayMenu();
getMenuSelection(choice);
getStartEndAndIncrement(start,end,increment);
switch(choice)
{
case 'C':
CtoF(start,end,increment,count);
displayCtoFTable(start,end,increment);
break;
case 'F':
FtoC(start,end,increment,count);
displayFtoCTable(start,end,increment);
break;
}
}while(true);
return 0;
}
void displayMenu()
{
cout<<"1. Enter 'c' or 'C' to convert from celsius to fahrenheit(C to F)"<<endl;
cout<<"2. Enter 'f' or 'F' to convert from fahrenheit to celsius(F to C)"<<endl;
cout<<"3. Enter 'q' or 'Q' to Quit"<<endl;
}
void getMenuSelection(char &choice)
{
do
{
cout<<"Enter your choice : ";
cin>>choice;
choice=toupper(choice);
if(choice=='C' || choice=='F')
return;
else if(choice=='Q')
exit(0);
else
cout<<endl<<"Invalid choice. Try again."<<endl;
}while(true);
}
void getStartEndAndIncrement(int &start,int &end,int &increment)
{
cout<<endl<<"Enter starting temperature : ";
cin>>start;
cout<<endl<<"Enter ending temperature : ";
cin>>end;
cout<<endl<<"Enter increment : ";
cin>>increment;
}
void CtoF(int start,int end,int increment,int& count)
{
double d;
int i;
for(i=start;i<=end;i=i+increment)
{
count=count+1;
}
temp=new double[count];
int c=0;
for(i=start;i<=end;i=i+increment)
{
d = ((9.0 * i)/5.0)+32.0;
temp[c]=d;
c=c+1;
}
}
void FtoC(int start,int end,int increment,int &count)
{
double d;
int i;
for(i=start;i<=end;i=i+increment)
{
count=count+1;
}
temp=new double[count];
int c=0;
for(i=start;i<=end;i=i+increment)
{
d = (5.0*(i-32.0))/9.0;
temp[c]=d;
c=c+1;
}
}
void displayCtoFTable(int start,int end,int increment)
{
char deg = 248;
int c=0;
cout<<endl<<"| From "<<"C"<<deg<<setw(4)<<"|"<<setw(5)<<" To "<<"F"<<deg<<setw(10)<<"|";
for(int i=start;i<=end;i=i+increment)
{
cout<<endl<<"----------------------------";
cout<<endl<<"|"<<setiosflags(ios::right)<<i<<deg<<setw(10)<<"|"<<setw(10)<<setiosflags(ios::fixed)<<setprecision(1)<<temp[c]<<deg<<setw(5)<<"|";
c=c+1;
}
cout<<endl<<"----------------------------"<<endl;
}
void displayFtoCTable(int start,int end,int increment)
{
char deg = 248;
int c=0;
cout<<endl<<"| From "<<"F"<<deg<<setw(4)<<"|"<<setw(5)<<" To "<<"C"<<deg<<setw(10)<<"|";
for(int i=start;i<=end;i=i+increment)
{
cout<<endl<<"----------------------------";
cout<<endl<<"|"<<setiosflags(ios::right)<<i<<deg<<setw(10)<<"|"<<setw(10)<<setiosflags(ios::fixed)<<setprecision(1)<<temp[c]<<deg<<setw(5)<<"|";
c=c+1;
}
cout<<endl<<"----------------------------"<<endl;
}
Explanation / Answer
#include<iostream>
#include<stdlib.h>
#include<iomanip>
using namespace std;
void displayMenu();
void getMenuSelection(char&);
void getStartEndAndIncrement(int&,int&,int&);
void CtoF(int,int,int,int&, double *temp);
void FtoC(int,int,int,int& , double *temp);
void displayCtoFTable(int,int,int , double *temp);
void displayFtoCTable(int,int,int , double *temp);
int main()
{
char choice;
int start=0;
int end=0;
int increment=0;
double *temp;
int count=0;
do
{
displayMenu();
getMenuSelection(choice);
getStartEndAndIncrement(start,end,increment);
switch(choice)
{
case 'C':
CtoF(start,end,increment,count, temp);
displayCtoFTable(start,end,increment , temp);
break;
case 'F':
FtoC(start,end,increment,count , temp);
displayFtoCTable(start,end,increment ,temp);
break;
}
}while(true);
return 0;
}
void displayMenu()
{
cout<<"1. Enter 'c' or 'C' to convert from celsius to fahrenheit(C to F)"<<endl;
cout<<"2. Enter 'f' or 'F' to convert from fahrenheit to celsius(F to C)"<<endl;
cout<<"3. Enter 'q' or 'Q' to Quit"<<endl;
}
void getMenuSelection(char &choice)
{
do
{
cout<<"Enter your choice : ";
cin>>choice;
choice=toupper(choice);
if(choice=='C' || choice=='F')
return;
else if(choice=='Q')
exit(0);
else
cout<<endl<<"Invalid choice. Try again."<<endl;
}while(true);
}
void getStartEndAndIncrement(int &start,int &end,int &increment, double *temp)
{
cout<<endl<<"Enter starting temperature : ";
cin>>start;
cout<<endl<<"Enter ending temperature : ";
cin>>end;
cout<<endl<<"Enter increment : ";
cin>>increment;
}
void CtoF(int start,int end,int increment,int& count , double *temp)
{
double d;
int i;
for(i=start;i<=end;i=i+increment)
{
count=count+1;
}
temp=new double[count];
int c=0;
for(i=start;i<=end;i=i+increment)
{
d = ((9.0 * i)/5.0)+32.0;
temp[c]=d;
c=c+1;
}
}
void FtoC(int start,int end,int increment,int &count , double *temp)
{
double d;
int i;
for(i=start;i<=end;i=i+increment)
{
count=count+1;
}
temp=new double[count];
int c=0;
for(i=start;i<=end;i=i+increment)
{
d = (5.0*(i-32.0))/9.0;
temp[c]=d;
c=c+1;
}
}
void displayCtoFTable(int start,int end,int increment , double *temp)
{
char deg = 248;
int c=0;
cout<<endl<<"| From "<<"C"<<deg<<setw(4)<<"|"<<setw(5)<<" To "<<"F"<<deg<<setw(10)<<"|";
for(int i=start;i<=end;i=i+increment)
{
cout<<endl<<"----------------------------";
cout<<endl<<"|"<<setiosflags(ios::right)<<i<<deg<<setw(10)<<"|"<<setw(10)<<setiosflags(ios::fixed)<<setprecision(1)<<temp[c]<<deg<<setw(5)<<"|";
c=c+1;
}
cout<<endl<<"----------------------------"<<endl;
}
void displayFtoCTable(int start,int end,int increment , double *temp)
{
char deg = 248;
int c=0;
cout<<endl<<"| From "<<"F"<<deg<<setw(4)<<"|"<<setw(5)<<" To "<<"C"<<deg<<setw(10)<<"|";
for(int i=start;i<=end;i=i+increment)
{
cout<<endl<<"----------------------------";
cout<<endl<<"|"<<setiosflags(ios::right)<<i<<deg<<setw(10)<<"|"<<setw(10)<<setiosflags(ios::fixed)<<setprecision(1)<<temp[c]<<deg<<setw(5)<<"|";
c=c+1;
}
cout<<endl<<"----------------------------"<<endl;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.