• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Sorting elements in an array based off user input responses.

 
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
'm writing a program that helps a user make a Top X or top favorites list.

The user will first enter the number of items that will be on the list which is then used to create an array of the same size. Then the user populates the array. Finally the user is asked a series of question where the program compares each item on the list to another item on the list one at a time and ask between the two which one do thy prefer more. Based on their choice their score is kept in another array that stores integer values. Which is then sorted in descending order.

When I run the program however it doesn't compare all the elements to each element.

For example say I have an array three elements long with the items being "Vanilla", "Chocolate", and "Strawberry." It will ask me to compare Vanilla to Chocolate, then Vanilla to Strawberry. However it will then not compare Chocolate to Strawberry and then print the results. I want to know what logical error I am getting. I have never used a bubble search for strings.

Here is my code for reference:

 
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Welcome to the Ranch

So how are you recording the preferences for each flavour? Do you have a Flavour class? Your code is pretty illegible, with some design errors, e.g. apparent use of parallel arrays, and too much code in the main method. I think you will end up deleting all that code, and starting again, I am afraid.

Where did you get the =+ operator from? That is almost certainly a mistake. Maybe you meant +=
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
When I run the program with either =+ or += the results are the same and makes no difference plus the complier doesn't count it as an error.

Yes I am using parallel arrays One array stores the "score" the user puts in, when I run it it technically does the score keeping correctly. Only problem is the that it doesn't compare each element to every element. A bubble sort probably isn't a very good option but I'm not sure how to do the comparison.

Technically I could make it work if I made the array a fixed length and just made a giant if/if else statement for each combination of array index elements but I would prefer the user be able to make an array of arbitrary length.

I usually don't cram it in the main method. But since the program was small and I was feeling lazy I didn't bother making an entire method for it.
 
Campbell Ritchie
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You can try guessing, as you appear to be doing. You can try -= and =- too, and if you guess 1000000 times you will probably get something which works. Or you can stand back and think about the solution and have one solution which works.
Start with a class which encapsulates flavour and preferences. Get rid of the parallel arrays, which are very error‑prone.
Find out what += -= =+ and =- mean. They might all get past the compiler but that no more makes them right than opening a car door a 70mph because the central locking isn't turned on.

You also appear to be trying to do everything at once. You mustn't. You should do it in tiny stages and verify that each stage is working before trying the next part of the exercise.
 
Marshal
Posts: 4491
572
VSCode Eclipse IDE TypeScript Redhat MicroProfile Quarkus Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:When I run the program with either =+ or += the results are the same and makes no difference plus the complier doesn't count it as an error.


=+ and += operations are not the same and for most cases will yield different results.
    a =+ b will assign the value of b to a
    a += b will add a and b and assign the sum to a

For example, if a equals 10 and b equals 2:
    a =+ b will result in a being equal to 2
    a += b will result in a being equal to 12
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Wonder why I didn't see this when I looked it up....hmm I concede.

Still for my purposes it was still giving the same consistent order of which numbers were bigger.

I'm going to try to find something better then a parallel array now.
 
Campbell Ritchie
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Easy: a class which encapsulates the flavour and its preference. It can have increasePreference and decreasePreference methods. Once you have that working, you can consider ordering. But before you consider ordering, read about ordering in the Java™ Tutorials.
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I already solved the problem......
 
Campbell Ritchie
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Show us your solution.
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator


All I did was change the z in my indexes to a y. Was a dumb error not sure why I did that, prob cause I wrote this late at night when I was tired. And wasn't fully "awake" when I started it.

Of course there probably is a more elegant solution but for now the program does what I wanted it to do. (I'll put the solution in it own method and then split it apart.)

For the last time the flavor was just an analogy. The Users could enter "Red" "Blue" "Green" or "Crack" "Snackle" "Pop." Creating a method for flavors would be pointless. Because the string content itself doesn't matter as far as the logic goes. Only time the content matters is when I ask the user which one they like best? Far as the program is concerned it "Red" vs "Blue" might as well be "wingbats" vs "fogglehorns."


 
Marshal
Posts: 8856
637
Mac OS X VI Editor BSD Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:for now the program does what I wanted it to do

How you proved it that to yourself?

What roles plays line 4 in your latest code?
 
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:For the last time the flavor was just an analogy. The Users could enter "Red" "Blue" "Green" or "Crack" "Snackle" "Pop." Creating a method for flavors would be pointless. Because the string content itself doesn't matter as far as the logic goes. Only time the content matters is when I ask the user which one they like best? Far as the program is concerned it "Red" vs "Blue" might as well be "wingbats" vs "fogglehorns."


OK, but it's a fairly laborious process, isn't it? Fine if you only have three things to worry about; but what about 4 or 5 or 10? Might it not be simpler to simply assign each "item" a value, and then sort or filter based on that?

And have you actually tested your program with any more than 3 items?

Winston
 
Liutauras Vilda
Marshal
Posts: 8856
637
Mac OS X VI Editor BSD Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Here you checking strings if i'm not mistaken, strings shouldn't be checked for equality like this, unless you want to check if references refer to the same memory location. Check if your intense is that.

Code is very difficult to read, but I think you checking the same elements as many times as inner for loop iterates. Check if your intense is that, as i'm not sure. I mean this part:

In the code line below you confusing your reader by naming array size as ListSize, which is not a List.

Well, I have to admit, not much I understand from your code what you want to do in general, even tho task sounds simple.
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:

Donovan Smith wrote:For the last time the flavor was just an analogy. The Users could enter "Red" "Blue" "Green" or "Crack" "Snackle" "Pop." Creating a method for flavors would be pointless. Because the string content itself doesn't matter as far as the logic goes. Only time the content matters is when I ask the user which one they like best? Far as the program is concerned it "Red" vs "Blue" might as well be "wingbats" vs "fogglehorns."


OK, but it's a fairly laborious process, isn't it? Fine if you only have three things to worry about; but what about 4 or 5 or 10? Might it not be simpler to simply assign each "item" a value, and then sort or filter based on that?

And have you actually tested your program with any more than 3 items?

Winston



You seem to be assuming that I or the user should know before hand the value of each object. If I did I wouldn't need to ask the user to choice between any given pair of elements in the array.
If I knew exactly what a person's preference was for each item I would simply assign an arbitrary value to each one, this program operates under the assumption the the programmer and the user does not know the value each item will have in the array. It's meant to help a people make a favorite list. If a person knew the value of the items of the list. (Or which items they liked more or less in this case.) The entire program would be pointless.

And yes I have tested it on more then three items and the amount of comparisons between any two items you will have does grow with each item on a given array. However from the user perspective it
is simply asking do you like A or B more?

I don't really see how it's that laborious.

I also went back and took the code out of the main method and divided some of the work into other methods. The core logic is mostly the same and other then the methods and method calls I mostly just copied and pasted. I think it'd be more work then it's work to create an entire class for array objects that can be anything the user wants.

 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Liutauras Vilda wrote:Here you checking strings if i'm not mistaken, strings shouldn't be checked for equality like this, unless you want to check if references refer to the same memory location. Check if your intense is that.

Code is very difficult to read, but I think you checking the same elements as many times as inner for loop iterates. Check if your intense is that, as i'm not sure. I mean this part:

In the code line below you confusing your reader by naming array size as ListSize, which is not a List.

Well, I have to admit, not much I understand from your code what you want to do in general, even tho task sounds simple.



I'll rename it from ListSize I was thinking in the user's logic at that point rather then programming logic. (Which was dumb as a user won't be reading the code.)
 
Liutauras Vilda
Marshal
Posts: 8856
637
Mac OS X VI Editor BSD Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Once again, are you sure you want to check references here?

And as I mentioned earlier, I think you'll do the same check many times because of your inner loop. In different words you'll ask the same persone the same question what do you prefer A or B as many times as comparisonsToMake big is, is it what you want?
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Liutauras Vilda wrote:Once again, are you sure you want to check references here?

And as I mentioned earlier, I think you'll do the same check many times because of your inner loop. In different words you'll ask the same persone the same question what do you prefer A or B as many times as comparisonsToMake big is, is it what you want?



That Error has been fixed for awhile now.....I reposted the updated code awhile back and solved that problem. [z + 1] is now [y + 1]
 
Liutauras Vilda
Marshal
Posts: 8856
637
Mac OS X VI Editor BSD Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:That Error has been fixed for awhile now....

I was refering to different thing. I mentioned twice that you're checking "text" != "text" is it what you want? Strings equality suppose to be checked "text".equals("text").

Donovan Smith wrote:I reposted the updated code awhile back and solved that problem. [z + 1] is now [y + 1]

That is probably even more worse then. And I mentioned that twice too. Your inner loop for does not advance element position, so you're asking user which thing they do prefer more more than one time. Maybe it is your intention, I don't know that.
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Liutauras Vilda wrote:

Donovan Smith wrote:That Error has been fixed for awhile now....

I was refering to different thing. I mentioned twice that you're checking "text" != "text" is it what you want? Strings equality suppose to be checked "text".equals("text").

Donovan Smith wrote:I reposted the updated code awhile back and solved that problem. [z + 1] is now [y + 1]

That is probably even more worse then. And I mentioned that twice too. Your inner loop for does not advance element position, so you're asking user which thing they do prefer more more than one time. Maybe it is your intention, I don't know that.



At this point I think we are having two different conversations. All I know is that in the context of whether or not the program does what I want it to do without errors. I have made some changes where it now does just that. And in that sense I have successfully "fixed" the program, and it works great. Your "help" is confusing as the code you are telling me is "worse" now works better then when it wasn't "worse."

Anyway the problem is solved so there is no need to help me anymore.
 
Winston Gutkowski
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:You seem to be assuming that I or the user should know before hand the value of each object. If I did I wouldn't need to ask the user to choice between any given pair of elements in the array.


No, I'm not questioning the requirement, merely the methodology; in the same way that I would question the use of a bubble-sort instead of a quicksort.

Given that your program is going to take an awfully long time to run for even as little as a "Top 5" list, what about this (for a "Top X" list):
1. Get the first X items to be ranked.
2. List them on the screen and ask the user to rank each one with a number (and suggest they leave gaps). That could probably be done with a single entry, but doesn't have to be.
3. See if they want to add any more items.
4, If so: [Loop until they've entered them all]
  a. Get the item.
  b. Ask them for a number that ranks that item relative to the others listed - and if they want to add a new item between two adjacent ranks (say 23 and 24), allow them to enter 23.5 (or as many decimal points as its takes - ie, make that "rank" value a double or a BigDecimal).

TBH, I'm not wild about that solution either; but it was the best I could come up with at short notice.

And it doesn't require my user to answer 55 "Do you prefer A or B" questions (at the very least) to get a "Top 10 list".

Winston
 
Winston Gutkowski
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:TBH, I'm not wild about that solution either...


And with good reason - wildly over-engineered .

You can simply build the list from scratch.

For each item from the second one on, ask your user to enter a number that indicates where it should be placed on the next screen. So if you have:
1. Apples
2. Pears
3. Oranges

and they enter a new item "Grapes" with a value of 2, then that's where they want to see it on the next screen, ie:
1. Apples
2. Grapes
3. Pears
4. Oranges

and you can trim the list to any length you want.

Winston
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:

Donovan Smith wrote:You seem to be assuming that I or the user should know before hand the value of each object. If I did I wouldn't need to ask the user to choice between any given pair of elements in the array.


No, I'm not questioning the requirement, merely the methodology; in the same way that I would question the use of a bubble-sort instead of a quicksort.

Given that your program is going to take an awfully long time to run for even as little as a "Top 5" list, what about this (for a "Top X" list):
1. Get the first X items to be ranked.
2. List them on the screen and ask the user to rank each one with a number (and suggest they leave gaps). That could probably be done with a single entry, but doesn't have to be.
3. See if they want to add any more items.
4, If so: [Loop until they've entered them all]
  a. Get the item.
  b. Ask them for a number that ranks that item relative to the others listed - and if they want to add a new item between two adjacent ranks (say 23 and 24), allow them to enter 23.5 (or as many decimal points as its takes - ie, make that "rank" value a double or a BigDecimal).

TBH, I'm not wild about that solution either; but it was the best I could come up with at short notice.

And it doesn't require my user to answer 55 "Do you prefer A or B" questions (at the very least) to get a "Top 10 list".

Winston



Here is the thing. You could make a list that way, problem is I try to make a list that way all the time without a program because I keep backtracking and being indecisive. Because I'm trying to rank one in relation to the whole.

I specifically wanted to only compare two at a time. (Even if it is tedious) To discourage that kind of indecisiveness that plagues me.(And I assume other people.) The only thing I have to do is choice 10 or 20 things to sort through before hand. After that the program by it's nature stops me from being indecisive and backtracking. I find the inconvenience a good trade-off for the strictness and less "fuzzy" decision making, at the same time I can justify making a program about it so I don't have to tally and keep track of all the comparisons I'd have to make if I did it on paper.

In short, the method your describing I can do all the time on hand and doing a program version would not help my indecisiveness, while what I'd doing the method of organizing a favorite list is more strict so I don't keep changing my mind midlist-making and is justified in writing a program for precisely the reason why you said the methodology wouldn't work. As much work as it'd be to do on a program, it's easier to have the program keep track of the questions and pairs to compare then say.....me. That seems the philosophy of data manipulation have the computer do things a person could do but faster and with less headache.
 
Winston Gutkowski
Bartender
Posts: 10780
71
Hibernate Eclipse IDE Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:Here is the thing. You could make a list that way, problem is I try to make a list that way all the time without a program because I keep backtracking and being indecisive. Because I'm trying to rank one in relation to the whole...


I think I understand what you're saying. It's like trying to make a list of your 10 favourite films from all the ones you've ever seen. So you make a list (that would probably take me days), and then work out that you've missed out "Casablanca" - which would definitely be either #1 or #2 for me.

Am I on the right lines here?

OK, well consider this. Forget my first "solution" (way too overthought) and look at my last post instead. It's much simpler, and at each stage you only have ONE item to deal with.

So, let's say I've worked really hard and wittled my "favourite film" list down to 10: Schindler's List, Alien, The Godfather, Die Hard, MASH, 2001, Gandhi, Shawshank, Citizen Kane, and Casablanca.
But now I need to wittle that down to a "Top three".

The first one (in random order) is "Schindler's List", so I put it up:
1. Schindler's List.
The second is "Alien", so I only have one decision - is "Alien" better than "Schindler's List"? Answer: no (YMMV), so I get:
1. Schindler's List.
2. Alien.
The next is "The Godfather", so I now have to decide where it ranks, so I get:
1. The Godfather.
2. Schindler's List.
3. Alien.
The next is "Die Hard,", so I now have to decide where it ranks, but this time, I have to lose a title (top 3, remember). Result:
1. The Godfather.
2. Die Hard.
3. Schindler's List.
The next is "MASH" which, good though it is, can't change my top 3
...
and so on and so on, down to "Casablanca", at which point my list looks like this:
1. Shawshank.
2. 2001.
3. The Godfather.
Well sorry guys, but Bogie's gotta be in there, so I end up with:
1. Shawshank.
2. Casablanca.
3. 2001.

And you know what, that's a pretty good "Top 3" (for me).
And the reason it's good is that at every stage I've limited the number of choices I have to make.

And I did it with 9 decisions. not 55.

Hope it helps.

Winston

PS: And incidentally, the rest of that list would be: #4:The Godfather, #5:Gandhi, #6:Die Hard, #7:Schindler's List, #8:Citizen Kane, #9:MASH and #10:Alien.
 
Donovan Smith
Greenhorn
Posts: 11
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Winston Gutkowski wrote:

Donovan Smith wrote:Here is the thing. You could make a list that way, problem is I try to make a list that way all the time without a program because I keep backtracking and being indecisive. Because I'm trying to rank one in relation to the whole...


I think I understand what you're saying. It's like trying to make a list of your 10 favourite films from all the ones you've ever seen. So you make a list (that would probably take me days), and then work out that you've missed out "Casablanca" - which would definitely be either #1 or #2 for me.

Am I on the right lines here?

OK, well consider this. Forget my first "solution" (way too overthought) and look at my last post instead. It's much simpler, and at each stage you only have ONE item to deal with.

So, let's say I've worked really hard and wittled my "favourite film" list down to 10: Schindler's List, Alien, The Godfather, Die Hard, MASH, 2001, Gandhi, Shawshank, Citizen Kane, and Casablanca.
But now I need to wittle that down to a "Top three".

The first one (in random order) is "Schindler's List", so I put it up:
1. Schindler's List.
The second is "Alien", so I only have one decision - is "Alien" better than "Schindler's List"? Answer: no (YMMV), so I get:
1. Schindler's List.
2. Alien.
The next is "The Godfather", so I now have to decide where it ranks, so I get:
1. The Godfather.
2. Schindler's List.
3. Alien.
The next is "Die Hard,", so I now have to decide where it ranks, but this time, I have to lose a title (top 3, remember). Result:
1. The Godfather.
2. Die Hard.
3. Schindler's List.
The next is "MASH" which, good though it is, can't change my top 3
...
and so on and so on, down to "Casablanca", at which point my list looks like this:
1. Shawshank.
2. 2001.
3. The Godfather.
Well sorry guys, but Bogie's gotta be in there, so I end up with:
1. Shawshank.
2. Casablanca.
3. 2001.

And you know what, that's a pretty good "Top 3" (for me).
And the reason it's good is that at every stage I've limited the number of choices I have to make.

And I did it with 9 decisions. not 55.

Hope it helps.

Winston

PS: And incidentally, the rest of that list would be: #4:The Godfather, #5:Gandhi, #6:Die Hard, #7:Schindler's List, #8:Citizen Kane, #9:MASH and #10:Alien.



No actually you don't get it. I'm saying I don't need help remembering what stuff would be on the list, just when I have the stuff ordering it. I figure the best way to do that would be to compare each item on the list to another item but in real life this would be tedious. With the program I might need to go other the list 55 times but I don't need to keep track if I missed a comparison.

Your suggestion is, as I already explained, something I already do all the time in my head.(And end up unable to decide.)

So yeah for my purposes my way way is better, and I don't mind going through 55 decisions, in truth the thoroughness makes me feel better, like I didn't miss anything.
 
Campbell Ritchie
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Donovan Smith wrote:. . .
No actually you don't get it.

Winston most certainly does get it.

. . . compare each item on the list to another item but in real life this would be tedious. . . .

Not at all. Comparing successive items in a List is very easy if you have the right tools in place. I told you where you can find out about such tools on Tuesday. The slightly complicated part of Winston's suggestion is collecting the preferences. That is a bit like collecting scores in a football league, where each win can move a team higher up the league. Once those data are collected, the sorting can be quite simple.

. . . So yeah for my purposes my way way is better, and I don't mind going through 55 decisions, in truth the thoroughness makes me feel better, like I didn't miss anything.

You have ended up with convoluted code which nobody can read, and a solution which looks as though it cannot be extended.
 
Ranch Hand
Posts: 239
12
Scala IntelliJ IDE Eclipse IDE Java Ubuntu
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
OK I think he feels he got enough help now. Why keep dragging it up. The thread reads as very combative. I love a good debate as much as anyone but maybe its ok to stop here.
 
Campbell Ritchie
Marshal
Posts: 79153
377
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
We are very sorry if we have been combative. Unfortunately we do have a tendency to defend ourselves.
You are right to suggest we let the thread die in peace.
 
reply
    Bookmark Topic Watch Topic
  • New Topic