Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

[Exam Problems] Advanced C# Exam 19 July 2015 - Problem{1} - Bunker Buster

Здравейте на всички.За първи път задавам въпрос във форума и се надявам след като прочeтох правилата да съм ги разбрал.

Имам проблем със задачата [Exam Problems] Advanced C# Exam 19 July 2015 - Problem{1} - Bunker Buster.

Пускам кода ми като приемам препоръки отностно него и критики ,защото ми се струва ,че стана малко нечетим.

http://pastebin.com/nqK6M95i

Нулевите тестове минават,но на следващите ми пише Runtime error и си мисля,че ми гърми при проверките,но като правя различни варианти не ми гърми.

Благодаря предварително.

Тагове:
0
C# Advanced
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Това, което забелязвам, е, че методът ти Bomb е безсмислен и освен това гърми с IndexOutOfRangeException, когато целта е по-краищата на матрицата... Закоментираш извикването на този метод и вече няма Runtime Error, затова пък дава грешни отговори на всички тестове (без нулевите).

 

В метода CellsDestroyed е грешно условието на if-a. Трябва да е:

if (newMatrix[row, col] <= 0)

10/100 дотук laugh

 

С корекцията:

Console.WriteLine("Damage done: {0:f1} %", result);

20/100 blush

 

Дотук програмата като че ли работи само когато има само една бомбардировка... Струва ми се, че проблема идва от този ред във функцията BombMatrix:

newMatrix[row, col] = matrix[row, col] - (int)Math.Ceiling((double)power / 2);

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

1
30/04/2016 21:40:47
TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

Благодаря ти.Аз ще я довърша проблема ми беше само защо ми гърми.Сега вече знам каго я измисля ще напиша

Измислих я само до 40/100.

Така и не мога да разбера след всички корекции,защо продължава да ми гърми.

http://pastebin.com/nqK6M95i

Ако имаш други идеи.

0
01/05/2016 12:12:28
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

В BombMatrix там, където си слагал break, го замених с continue. С break-овете прекъсваш проверката за други бункери по същата колона...

 

Извадих метода DestroyedCells от BombMatrix. Лоша практика е да имаш метод, който изпълнява две дейности - в случая не само се бомбардират клетките, но и се броят разрушените клетки. Вместо това го преработих да проверява цялата матрица за унищожени клетки и го извиквам от Main само един път - след като са извършени всички бомбардировки.

 

С тези промени става 60/100, ще търся още...

0
ArmenPotourlyan+deleted! avatar ArmenPotourlyan+deleted! 488 Точки

Не мога да намеря къде са останалите грешки...

 

Ако искаш виж моето решение - то дава 100/100. Аз използвам малко по-различна логика за бомбардирането и не мога само като сравня решенията да намеря, къде се дъни твоето sad

0
TeodorDimitrov89 avatar TeodorDimitrov89 264 Точки

Една грешка която съм направил е в където чета входа съм сложил ToLower() а то не трябва да е така мисля че с тази поправка може да е вярна.

Твоето решение ще го видя,но искам още малко да я помъча.

В момента в който смених break с continue ми дава 70/100;

Мога ли да видя как си го преработил .

Благодаря за отделеното време.

0
01/05/2016 19:55:50
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.