AydoanB 0 Точки

## P01.Dating App

Така,от 2 часа мъча тази задача и все една и съща грешка ми дава: Unhandled exception. System.InvalidOperationException: Stack empty.

Задачата: https://pastebin.com/JveBxzKN

Условието:

# Dating App

First you will be given a sequence of integers representing males. Afterwards you will be given another sequence of integers representing females.

You have to start from the first female and try to match it with the last male.

• If their values are equal, you have to match them and remove both of them. Otherwise you should remove only the female and decrease the value of the male by 2.
• If someone’s value is equal to or below 0, you should remove him/her from the records before trying to match him/her with anybody.
• Special case - if someone’s value divisible by 25 without remainder, you should remove him/her and the next person of the same gender.

You need to stop matching people when you have no more females or males.

### Input

• On the first line of input you will receive the integers, representing the males, separated by a single space.
• On the second line of input you will receive the integers, representing the females, separated by a single space.

### Output

• On the first line of output - print the number of successful matches:
• "Matches: {matchesCount}"
• On the second line - print all males left:
• If there are no males: "Males left: none"
• If there are males: "Males left: {male1}, {male2}, {male3}, (…)"
• On the third line - print all females left:
• If there are no females: "Females left: none"
• If there are females: "Females left: {female1}, {female2}, {female3}, (…)"

### Constraints

• All of the given numbers will be valid integers in the range [-100, 100].

### Examples

 Input Output Comment 3 6 9 12 12 9 6 1 25 25 Matches: 3 Males left: 1 Females left: none The first pair is the first female with value of 12 and the last male of value 12, their values are equal, so we match them, therefore - remove them from the records. Then we have two more matches (9 == 9 and 6 == 6). But the value of the next male is 3 and the value of the next female is 1, it’s not a match and we remove the female and reduce the male’s value by 2. We have a female whose value is 25 and we have to remove her and the next female.Then, we print the desired output. 3 0 3 6 9 0 12 12 9 6 1 2 3 15 13 4 Matches: 4 Males left: none Females left: 15, 13, 4

Тагове:
0
kkaraivanov 427 Точки

Здравей! Ако все още не си открил проблема, пробвай първо да оправиш While цикъла -> while (female.Any() || female.Any()), след това поправи същите грешки в проверките за принтиране на колекциите. Ако се появи друга грешка ще тествам и аз. Може да поомислиш и върху проверките в цикъла. Според мен не ти трябва да продължава надолу с други проверки ако влезне в някой if където вади от стека или опашката. Незнам, просто идея, не съм вниквал в условието. Успех

0
13/08/2020 23:30:50
AydoanB 0 Точки

Бях разменил местата на стека и опашката затова така се е получило, но самия exception, който ми дава не е от while цикъла. Най-вероятно с някой if нещо съм объркал

0
14/08/2020 01:20:13
kkaraivanov 427 Точки

За изход от while цикъла си сложил само ако опашката има елементи, а стека не го проверяваш. По тоци начин цикъла се завърта и при празен стек, в if проверка вадиш от него несъществуващ елемент. Това е причината да ти гърми програмата. Цикъла трябва да бъде -

``while(female.Any() || male.Any()) ``

Когато правиш проверка за принтиране на концолата, пак проверяваш само има ли елементи в опашката, стека не го проверяваш. Не е добре да ползваш често копи-пейст, но като го правиш, променяй променливите веднага защото на по късен етап при по-дълъг код може трудно да откриеш грешката.

0