Loading...
Kaloyan777 avatar Kaloyan777 17 Точки

[Exam Problems] C# Basics - 14 April 2014 morning - Problem{2} - Biggest Triple

Колеги, може ли някой да ми каже защо кода ми не се изпълнява въобще?
След като компилирам ми дава да веведа Console.ReadLine za "n", натискам Enter и край, до там! :O


..a, опитвам се да реша Problem 2 – Biggest Triple, нали такова :D

Идеята ми е да, създам два листа, единия да обходя с три цикъла, като на всяка итерация да се събират тези три елемента в променлива за сума, след това да се добави тази сума като елемент на другия лист, след това да се изтрият от първия лист само тези три елемента, и така докато сумата не стане равна на 0, поради това че елементите намаляват след всяка итерация на циклите.
И накрая да изпринти най-голямата сума, въпреки, че не това се иска като краен резултат...интересува ме най-вече, защо въобще кода не се изпълнява, LOL!

Бихте ли дали ваши варианти на решението?
Благодаря!

the кода

 

0
Programming Basics
Valleri avatar Valleri 304 Точки

В случая нямаш инпут за размера на масива затова ти дава грешка като "дадеш ентер". Поне това виждам от условието в кода ти, не съм гледал в задачата. Вземи ги като стринг с readline и после ги  split и от получения масив от стрингове го прехвърли в масив от интегери.

Иначе си усложняваш живота много, аз се сещам за два метода:
1. Предварително да изчислиш оставащите елементи
1.1 Разбираш колко елемента ти остават , т.е. 1 или 2
1.2 Смяташ им сумата и запазваш самите елементи в лист от интегери
1.3 След това правиш цикъл, който ще ходи от 0 до размера на масива минус елементите, които вече си сметнал ( трябва да си запазиш колко са за да може да извадиш от размера)
1.4 Стъпката няма да ти е ++ а "+= 3"
1.5 Събираш елементите по 3-ки и сравняваш дали стойноста е повече от намерената в точка 1.2, ако е по-голяма, чистиш листа и добавяш новите елементи.

2. Със безкраен while loop
2.1. Събираш променливите по тройки, т.е. първото ще е от arr[0] - arr[2]
2.2 Правиш сравнение на временната променлива и дали е по-голяма от променливата която ще държи най-голямата сума. 
2.3 Ако е по-голяма, запазваш в лист, ако се намери още по-голяма се чисти листа и се прави нов с новите елементи.
2.4 Изчисляваш си следващата стъпка, ако е по-голяма от размера на масива ще трябва да изчислиш каква е разликата и да пуснеш например if( n - (i+step) == 0) значи елемента, който остава е 1 - имаме 0-4 индекси а сме на 5 вече...ако е равно на 1 значи са 2 и си ги събираш и пак сравняваш с най-голямата сума.

2
Kaloyan777 avatar Kaloyan777 17 Точки

Благодаря!

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