•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 425,895 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 1,932 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser: Programming Forums
Views: 1543 | Replies: 9 | Solved
![]() |
•
•
Join Date: May 2008
Posts: 96
Reputation:
Rep Power: 1
Solved Threads: 0
Help I am having the following error:
error C2446: '==' : no conversion from 'int' to 'char *'
When I tried the following it ignores my counter and I am not sure why. This is a serious problem because it creates and infinite loop that keeps printing.
My code is the following:
error C2446: '==' : no conversion from 'int' to 'char *'
When I tried the following it ignores my counter and I am not sure why. This is a serious problem because it creates and infinite loop that keeps printing.
if(char(seating[openSeat + potential]) == '#')
counter2++;My code is the following:
void Tickets::displayOptions()
{
cout << "The following blocks are available: " << endl;
for(int openRow = 1; openRow < row; openRow++)
{
cout << "row " << openRow << ": ";
for(int openSeat = 1; openSeat < seat; openSeat++)
{
int neededSeatsOpen = (seat-1) - (openSeat - 1);
if(neededSeatsOpen >= qty)
{
int counter2 = 0;
for(int potential = qty - 1; potential >= 0; potential--)
{
if(char(seating[openSeat + potential]) == '#')
{
counter2++;
}
}
if(counter2 = qty)
{
for(int available = 0; available <= qty - 1; available++)
{
cout << seating[openSeat + available] << " ";
}
}
} // end if
} // nested end for
}// end for
} // end function display Options•
•
Join Date: Jul 2005
Posts: 1,154
Reputation:
Rep Power: 9
Solved Threads: 150
If seating is an array of char, then there is no need to cast seating[] to type char because seating [] is a char.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
•
•
Join Date: Oct 2007
Location: Cherry Hill, NJ
Posts: 1,876
Reputation:
Rep Power: 11
Solved Threads: 193
•
•
Join Date: May 2008
Posts: 96
Reputation:
Rep Power: 1
Solved Threads: 0
•
•
•
•
If seating is an array of char, then there is no need to cast seating[] to type char because seating [] is a char.
I don't see where you are trying to equate an int with a char pointer or char array, though I've never tried to cast a variable to it's own type to know what would happen. If dropping the cast to type char doesn't work then trying to isolate the error some other way will be needed for me to be of help.
I do know that this isn't doing what you want:
if(counter2 = qty)
That should be the equal operator, not the asssignment operator.
thank you - I did not even catch that.
•
•
Join Date: May 2008
Posts: 96
Reputation:
Rep Power: 1
Solved Threads: 0
•
•
•
•
The compiler believes that seating is an integer. The OP placed the cast there to try to get rid of the error message.
Can we see the class definition where seating is declared? Is there anything else between the class and the variable? Did you #include the header in the .cpp file?
Hope this helps.
Sure - below is my entire code. Where I actually call the displayOptions() function I commented out so I could work with my other functions.
Basically if I do not use the cast char to convert it and only use this:
if(seating[openSeat + potential] == '#')
{
counter2++;
}I get the following error:
.cpp(259) : error C2446: '==' : no conversion from 'int' to 'char *'
.cpp(259) : error C2040: '==' : 'char [31]' differs in levels of indirection from 'int'
Hence I left my code as with the char but there is still something strange going on in that displayOptions() function that produces garbage and that is why I cannot use my function.
Please help. My code is the following:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <iomanip>
using std::setw;
using std::setprecision;
#include <cstdlib> // contains prototypes for functions srand and rand
using std::rand;
using std::srand;
#include <ctime> // contains prototype for function time
using std::time;
#include "Tickets.h" // include definition of class Tickets
//constructor
Tickets::Tickets(int initial)
{
// initialize the prices array
int price = 90;
for (int zone = 1; zone < row; zone++)
{
prices[zone] = price;
price -= 5;
}
// initialize the actual seating array
for(int eachRow = 0; eachRow < row; eachRow++)
for(int eachSeat = 0; eachSeat < seat; eachSeat++)
seating[eachRow][eachSeat] = '#';
// initialize the available rows array
for(int row_i = 1; row_i < row; row_i++)
rowSeats[row_i] = seat - 1;
qty = initial;
ticketPrice = initial;
totalPrice = initial;
currentSalesAmount = initial;
seatsSold = initial;
theaterAvailability = (row-1)*(seat-1);
}
void Tickets::displaySeats()
{
// creater the header
cout << "Seats: " << setw(2);
int counter = 1;
do
{
if(counter <= 9)
cout << counter << setw(2);
else
cout << counter << setw(1);
}while(++counter <= 30);
// show the seat availability
for(int row_i = 1; row_i < row; row_i++)
{
if(row_i <= 9)
{
cout << "\nrow 0" << row_i << ": ";
}
else
{
cout << "\nrow " << row_i << ": ";
}
for (int seat_j = 1; seat_j < seat; seat_j++)
cout << seating[row_i][seat_j] << " ";
}
cout << endl;
}
void Tickets::purchaseTickets()
{
srand ( (unsigned)time ( 0 ) );
int counter = rand() % (row - 6);
do
{
qty = rand() % (seat-21);
while(qty == 0)
{
qty = rand() % (seat-21);
}
cout << "\nEnter the ticket quantity: " << qty;
// validateQty(qty);
if(theaterAvailability != 0)
{
seatProcess();
totalPrice = 0;
}
}while(--counter > 0);
}
void Tickets::seatProcess()
{
if(checkQtyAvailability(qty) == true)
{
if(qty == 1)
{
makeSelection();
}
else
{
//displayOptions();
for(int choices = qty; choices > 0; choices--)
{
makeSelection();
}
}
} // end if
displayTotalTicketPrices();
displayTheaterStats();
displaySeats();
}
void Tickets::makeSelection()
{
int selectedRow, selectedSeat;
selectedRow = rand() % row;
while(selectedRow == 0)
{
selectedRow = rand() % row;
}
cout << "\nSelect a row: " << selectedRow << endl;
selectedSeat = rand() % seat;
while(selectedSeat == 0)
{
selectedRow = rand() % row;
}
cout << "Select a seat: " << selectedSeat << endl;
validateSelection(selectedRow, selectedSeat);
}
void Tickets::validateSelection(int chosenRow, int chosenSeat)
{
if(seating[chosenRow][chosenSeat] == '*')
{
cout << "Sorry that seat is taken. Please make another selection.";
makeSelection();
}
else
{
seating[chosenRow][chosenSeat] = '*';
displayTicketPrice(chosenRow);
compute(chosenRow);
}
}
bool Tickets::checkQtyAvailability(int desiredQty)
{
bool answer = false;
if (theaterAvailability == 0)
{
cout << "Sorry the theater is sold out." << endl;
answer = false;
}
else if(theaterAvailability >= desiredQty)
answer = true;
else if(theaterAvailability < desiredQty)
{
qty = rand() % seat;
while(qty == 0)
{
qty = rand() % seat;
}
cout << "Sorry there are less seats available then the quantity entered. \n Re-enter the ticket quantity: " << qty;
// validateQty(qty);
seatProcess();
}
return answer;
}
void Tickets::compute(int purchasedRow)
{
//totalPrice += prices[purchasedRow];
//currentSalesAmount += prices[purchasedRow];
totalPrice += ticketPrice;
currentSalesAmount += ticketPrice;
seatsSold++;
theaterAvailability--;
rowSeats[purchasedRow]--;
}
double Tickets::getTotalPrice()
{
return totalPrice;
}
double Tickets::getCurrentSalesAmount()
{
return currentSalesAmount;
}
void Tickets::displayTicketPrice(int purchasedSeat)
{
ticketPrice = prices[purchasedSeat];
cout << "The purchased ticket price is: $" << setprecision(2) << ticketPrice << endl;
}
void Tickets::displayTotalTicketPrices()
{
cout << "\nYour total amount due for the " << qty << " tickets is: $" << setprecision(2) << getTotalPrice() << endl;
}
void Tickets::displayTheaterStats()
{
cout << "\nCurrent ticket sales amount: $" << setprecision(2) << getCurrentSalesAmount() << endl;
cout << "Seats sold: " << seatsSold << endl;
cout << "\n Row" << setw(22) << "Seats Available" << endl;
cout << "------- --------------" << endl;
for(int rowAnalysis = 1; rowAnalysis < row; rowAnalysis++)
cout << setw(4) << rowAnalysis << setw(17) << rowSeats[rowAnalysis] << endl;
cout << "Seats available in the entire theater: " << theaterAvailability << endl;
cout << endl;
}
void Tickets::displayOptions()
{
cout << "\nThe following blocks are available: " << endl;
for(int openRow = 1; openRow < row; openRow++)
{
cout << "row " << openRow << ": ";
for(int openSeat = 1; openSeat < seat; openSeat++)
{
int neededSeatsOpen = (seat-1) - (openSeat - 1);
if(neededSeatsOpen >= qty)
{
int counter2 = 0;
for(int potential = qty - 1; potential >= 0; potential--)
{
if(char(seating[openSeat + potential]) == '#')
{
counter2++;
}
}
if(counter2 == qty)
{
for(int available = 0; available <= qty - 1; available++)
{
cout << seating[openSeat + available] << " ";
}
}
}
}
}
} // end function display Options
bool Theater::test()
{
Tickets testTicket(0);
bool answer2 = false;
if(testTicket.prices[9] == 50)
{
answer2 = true;
}
else
{
answer2 = false;
}
return answer2;
}Also, below is my header file:
class Tickets
{
public:
const static int row = 16;
const static int seat = 31;
double prices[row];
char seating[row][seat];
int rowSeats[seat];
Tickets(int); //constructor
void displaySeats();
void purchaseTickets();
void compute(int);
void displayTotalTicketPrices();
void displayTicketPrice(int);
void displayTheaterStats();
// void validateQty(int);
void seatProcess();
bool checkQtyAvailability(int);
void makeSelection();
void validateSelection(int, int);
void displayOptions();
double getTotalPrice();
double getCurrentSalesAmount();
private:
int qty;
double ticketPrice;
double totalPrice;
double currentSalesAmount;
int seatsSold;
int theaterAvailability;
};
class Theater
{
public:
static bool test();
}; Last edited by QuantNeeds : Jul 7th, 2008 at 8:30 pm.
•
•
Join Date: Oct 2007
Location: Cherry Hill, NJ
Posts: 1,876
Reputation:
Rep Power: 11
Solved Threads: 193
Ah, it is because seating is declared as a 2D array, but you are only indexing one dimension. Hence the error.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
Hope this helps.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
if(seating[openRow][openSeat + potential] == '#')Hope this helps.
•
•
Join Date: May 2008
Posts: 96
Reputation:
Rep Power: 1
Solved Threads: 0
•
•
•
•
Ah, it is because seating is declared as a 2D array, but you are only indexing one dimension. Hence the error.
Did you mean to treat seating as a 1D array in your function? I'm not sure how you are trying to index the seating array in your function...
If I am reading it right (from just a quick glance over your code) it should be:
if(seating[openRow][openSeat + potential] == '#')
Hope this helps.
Thanks@! I hate when I spend so much time trying to fix code and it turns out to be something that should have been so obvious.
Thanks again
![]() |
•
•
•
•
•
•
•
•
DaniWeb C++ Marketplace
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
Similar Threads
- Help with adding users (C++)
Other Threads in the C++ Forum
- Previous Thread: logic or format nightmare
- Next Thread: Debug assertion failed



Linear Mode