Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   Help with code please! (http://www.go4expert.com/forums/help-code-t26134/)

shafishstix 25Jun2011 14:17

Help with code please!
 
Hi everyone this is my first post and it would be great if someone could help me out. Im currently learning c++ from a book and im stuck on an exercise, the code i create doesnt result in a fully functioning program.

There are two problems, first i create a struct and dynamically create an array of "so many" of that struct. However when i access the objects in the array i begin referring to its elements from 1 not 0, does that seem correct to you?

The other problem is the cin function call is skipped during the for loop and the possible solution is perplexing me. Here is the code -

Code:

#include <iostream>
/* This program should request the make and model year of a car, then
print out the results */

const int ArSize = 10;

struct car {
      char car_make;
      int model_year;     
};

int main()
{
    using namespace std;
    int car_num;
    cout << "How many cars do you wish to catalogue? ";
    cin >> car_num;
    car * car_array = new car[car_num];
   
    for (int i = 1; i <= car_num; i++)
    {
          cout << "Car #" << i << ":" << endl;
          cout << "Please enter the make: ";
          cin.get(car_array[i].car_make);
          cout << "\nPlease enter the year made: ";
          cin >> car_array[i].model_year;
          cout << endl << endl;
    }
   
    for (int i = 1; i <= car_num; i++)
    {
        cout << "\nThe make of car " << i << " is: " << car_array[i].car_make;
        cout << "The year of car " << i << " is: " << car_array[i].model_year;
        cout << endl;
    }
    return 0;
}


alssadi 25Jun2011 15:32

Re: Help with code please!
 
can you tell us what is the functionality of this program , its very important to know that

regards alssadi

shafishstix 25Jun2011 16:05

Re: Help with code please!
 
Yeah sure sorry, basically its an exercise from a book, the instructions were to -

First create a structure declaration which holds information about a cars make and the year of its model. (The structure member which describes the cars make can either be char or a string and the year an integer)

The program should request how many cars to catalog, then create a dynamic array of that many car structures.

Then the program requests input into each structure element of the array for the members which represent the car make and its model year.

The program should then out put the results inputted.

So the above program should run something like this -

How many cars do you wish to catalogue? 1 // 1 is the input in this instance
Car# 1:
Please enter the make: citroen // citroen = input
Please enter the year made: 1984 // 1984 = input
The make of car 1 is: citroen
The year of car 1 is: 1984

Im a newby so hopefully i've explained it properly. Im using DevC++ which uses GCC as its compiler.

Thanks.

shafishstix 26Jun2011 12:22

Re: Help with code please!
 
Ok so ive checked over the code and made some improvements. It mostly works but requires a few while loops which i copied from the book solution to the exercise (i have no idea how it works). Also the program still crashes on exit which has me stumped (i am running a 64 bit system and i have no idea if it makes a difference to the compiler. Here is the code -

Code:

#include <iostream>
#include <string>
/* This program should request the make and model year of a car, then
print out the results */

const int ArSize = 10;

struct car {
      char car_make[ArSize];
      int model_year;     
};

int main()
{
    using namespace std;
    int car_num;
    cout << "How many cars do you wish to catalogue? ";
    cin >> car_num;
    car * car_array = new car[(car_num - 1)];
    while(cin.get() != '\n')
        ;
    /* I copied this while statement from exercise code but i dont know
    why it is needed to get cinput functionality to work properly*/
   
    for (int i = 0; i < car_num; i++)
    {
         
          cout << "Car #" << i+1 << ":" << endl;
          cout << "Please enter the make: ";
          cin.getline(car_array[i].car_make, ArSize); //Starting at indice 1
          cout << "\nPlease enter the year made: ";
          cin >> car_array[i].model_year;
          cout << endl << endl;
          while(cin.get() != '\n')
          ;
    }
   
    for (int i = 0; i < car_num; i++)
    {
        cout << "\nThe make of car " << i+1 << " is: " << car_array[i].car_make;
        cout << "\nThe year of car " << i+1 << " is: " << car_array[i].model_year;
        cout << endl;
    }
    cout << "About to crash";
    return 0;
}


priyatendulkar 27Jun2011 11:42

Re: Help with code please!
 
Hi,

Your code crashes becoz of line ..

car * car_array = new car[(car_num - 1)];
Say for example..
car_num =4.
In your case memory will be allocated only for 3 objects.Hence the program crashes.


Modify it as

car * car_array = new car[(car_num )];


All times are GMT +5.5. The time now is 12:26.