My homework problem:
An array of integers named parkingTickets has been declared and initialized to the number of parking tickets given out by the city police each day since the beginning of the current year. (Thus, the first element of the array contains the number of tickets given on January 1; the last element contains the number of tickets given today.)
A variable named ndays has been declared and initialized to hold the size of the array. (Thus, if today were January 18, ndays would have the value 18; if today were February 3, ndays would have the value 34.)
In addition, a variable named mostTickets has been declared, along with a variable k .
Without using any additional variables, and without changing the values of ndays or the elements of the parkingTickets array, write some code that results in mostTickets containing the largest value found in parkingTickets .
For this, I have the following code:
for(k = 0; k < ndays; k++) {
if (parkingTickets[k] > parkingTickets[ndays]) {
mostTickets = parkingTickets[k];
}
}
But my exercise submitter is saying it's wrong. What's wrong with my code? I tried parkingTickets[ndays - 1]
as well, but that doesn't work either.
C++ provides std::max_element as well. I doubt that your teacher wants you to use this, but it's probably good to know about the standard library.
mostTickets = *std::max_element(parking_tickets, parking_tickets + ndays)
Your comparison is wrong. You're comparing the current element to the last element each time. What you need to do is compare the current element to mostTickets. i.e.
if(parkingTickets[k] > mostTickets)
Also, for good measure, I would recommend initializing mostTickets to being parkingTickets[0].
Let us first analyze your solution
int parkingTickets[] = {3,6,7,4,8,10,0};
int ndays = 7;
for(k = 0; k < ndays; k++) {
if (parkingTickets[k] > parkingTickets[ndays]) {
mostTickets = parkingTickets[k];
}
}
The problem with this solution is that you have not initialized the mostTickets variable and you dont have an else clause. This code would work for you.
int parkingTickets[] = {3,6,7,4,8,10,0};
int ndays = 7;
int mostTickets = -1;
for(int k = 0; k < ndays; k++) {
if (parkingTickets[k] > mostTickets) {
mostTickets = parkingTickets[k];
}
}
After this mostTickets will hold the value of the largest number in the array. This solution will take O(n) to complete since we are looping through the array and some work for comparisons.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With