-
May 28th, 2014, 03:59 AM
#1
Desperately need help. have little time :(
Can someone please help me out here. I've got an assignment to finish up on C++ and it just doesn't run properly. its a care hiring program that asks for details and prints it out at the end. when i enter my house number, address, and phone number it just goes loco. Help will be greatly appreciated. here's the code:
#include <iostream>
#include <cstdlib>
#include <string>
#include <cmath>
void line ();
using namespace std;
// Declarations
float price;
float cost;
char choice;
char option;
int numdays;
// Function for car choice
void carchoice ()
{
do { // Start of loop
cout << "\n\t\t\t\tCARS FOR HIRE\n\n\n\tProduct Code\t\tItem Description\tCost Per Day\n";
line ();
cout << "\n\n\tA\t\t\tNissan\t\t\t$7.00\t\t";
cout << "\n\n\tB\t\t\tFord Focus\t\t$7.00\t\t";
cout << "\n\n\tC\t\t\tPeugeot 107\t\t$9.00\t\t";
cout << "\n\n\tD\t\t\tVolvo V40\t\t$7.00\t\t";
cout << "\n\n\tE\t\t\tVolksWagon\t\t$7.50\t\t";
cout << "\n\n\n\tEnter choice of vehicle you wish to hire. (A, B, C, D or E):";
cin >> choice;
// Switch case statement
switch (choice)
{
case 'A':
case 'a':
cout<< "\n\tYou selected Nissan\n\t" << endl;
price = 7.00;
break;
case 'B':
case 'b':
cout<< "\n\tYou selected Ford Focus\n\t" << endl;
price = 7.00;
break;
case 'C':
case 'c':
cout<< "\n\tYou selected Peugeot 107\n\t" << endl;
price = 9.00;
break;
case 'D':
case 'd':
cout<< "\n\tYou selected Volvo V40\n\t" << endl;
price = 7.00;
break;
case 'E':
case 'e':
cout<< "\n\tYou selected VolksWagon\n\t" << endl;
price = 7.50;
break;
default:
cout << "\n\tThe choice of vehicle can not be found!\n\t"<<endl;
break;
}
cout << "\tEnter number of days you wish to hire it for. ";
cin >> numdays;
cost = price*numdays;
cout << "\n\tThe cost of hire for this car is "<<char(156)<< cost << endl;
cout << "\n\tDo you wish to hire this car at this rate? (Y/N): ";
cin >> option;
system ("cls");
// Entry of neither "y" or "Y" will initiate loop
}while (option != 'Y' && option != 'y');
system("cls");
cin.get();
}
// function for entry of customer details
void customerdetails (char name[],char surname[],int addressn,
char adres[],char PNum[])
{
cout << "\nEnter first name: "; //Print out
cin >> name; // input
cout << "\nEnter surname name: ";
cin >> surname;
cout << "\nEnter house number: ";
cin >> addressn;
cout << "\nEnter your address: ";
cin >> adres;
cout << "\nPlease enter Phone Number: ";
cin >> PNum;
cout << "\n\tYour invoice will now be displayed\n"<< endl;
system("pause");
}
// Main Function
int main ()
{
using namespace std;
char name[50], surname[50], adres[50], PNum[50];
int addressn;
system ("color f6"); // System Colour
carchoice (); // Call up carchoice function#
cout << "\n\t\t\tHire and Personal Details Form\t\t\n\n";
// Call up customer details function
customerdetails (name,surname,addressn,adres,PNum);
system("cls");
cin.get();
// Display invoice
cout << "\n\n\t======================================================="<< endl;
cout << "\n\t\t\tInvoice Details" << endl;
cout << "\n\n\tCustomer Name: "<< name <<" "<< surname << endl;
cout << "\n\n\tVehicle Type: ";
//If,else statement to display the the car that user has selected in the invoice
if (choice == 'a' || choice == 'A' )
{ cout << "Nissan" << endl; }
else if ( choice == 'b' || choice == 'B' )
{ cout << "Ford Focus" << endl; }
else if ( choice == 'c' || choice == 'C')
{ cout << "Peugeot 107" << endl; }
else if ( choice == 'd' || choice == 'D')
{ cout << "Volvo V40" << endl; }
else if ( choice == 'e' || choice == 'E')
{ cout << "VolksWagon" << endl; }
cout << "\n\n\tNumber of days: "<< numdays << endl;
cout << "\n\n\tRental Cost: "<< cost << endl;
cout << "\n\n\tHome Address: "<< addressn <<" "<< adres << endl;
cout << "\n\n\tPhone Number: "<< PNum << endl;
cout << "\n\n\t======================================================="<< endl;
cin.ignore();
return 0;
}
void line()
{
for(int i=1; i < 41; i++)
cout <<"__";}
-
May 28th, 2014, 04:38 AM
#2
Re: Desperately need help. have little time :(
Firstly, when posting code please use code tags. Go advanced, select the code and click '#'.
In what way? What happens? Have you tried to debug the code using the debugger to see where execution deviates from that expected from the program design?
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
May 28th, 2014, 04:53 AM
#3
Re: Desperately need help. have little time :(
Code:
void customerdetails (char name[],char surname[],int addressn,
char adres[],char PNum[])
note that you are passing addressn by value and not by ref so the changes made to addressn in the function will not be passed back to the caller.
When you try this program are the details you enter have less characters than the size of the arrays you are declaring? If, say, the entered address has more than 49 chars then buffer overflow will occur. Why not use the class string rather than an array of char? See http://www.cplusplus.com/reference/string/string/ Using class string means that you don't need to bother about the size of the string and whether the input will overflow it.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|