> I looked in the shopping_list routine in shop.c, and found what I believe > the problem to be. There is a for loop that goes through all the objects > the shopkeeper currently is carrying. The first time through, the pointer > last_obj is NULL, so this executes a special section of the code, which sets > last_obj to the current object, and the count of that object to 1. Note > that we haven't set the "found" flag to true yet. We continue looping. > > Lets assume that the shopkeeper has more of the same item - so the second > and subsequent times around this for loop, since last_obj is no longer NULL, > the first else clause will be executed. But the first statement in this is > an if test to see if this object is the same as the previous object, and if > so, all we do is increment the counter. We still have not set "found" true, > nor have we listed anything. > > What I believe is happenning is that since we never execute the code section > that actually lists the line showing the item and the quantity on hand > (because the trigger for this is when we find a new item that is not the > same as the last item). This section also sets the flag "found". > > Once we have added up the total number of items (all of hte same type), we > have not actually set this found flag. Hence the program logic things that > there is nothing currently available. Hmm, ok, without looking at the shop code, and just by going off what you have here, here's my advice for this situation. I'm assuming that it's using 3 variables, one int(for how many objects it has), one *char[](for the name of the object), and one int[](for the price of the object). Like I said, I'm not looking at the code, i'm just going to fly it here. Here's what you can do to solve your problem. At the top of the function, change the int[] to another *char[], for this explanation, I'll call it *char2[], then after the variable defines, give the *char[] variable a value of "Item", and give *char2[] the value of "Price". After that, anywhere it called upon int[], change it to *char2[], and where it sets int[] equal to something your gonna have to convert the numbers to ascii, i don't remember off hand what the c function for that was. I know this explanation was a bit cryptic, and i probably should have grabbed a piece of code from shop.c to show you, but then again, I don't exactly know what your shop functions look like. But what this does, is starts the variables off with a value, so that when it encounters that first object, it will think it found a different object, and will actually go through the code that sets found to true. It also sets up a neat little header above the items. There is probably a line in the code that does that already, but if you use this and it works, then you can comment that line out. Good luck. Jason Yarber -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT