Loading...
nikolaykaradzhov avatar nikolaykaradzhov 1 Точки

Technology Fundamentals with C# (05. Top Integers) Arrays Excercise

Здравейте,

1. Условие - Write a program to find all the top integers in an array. A top integer is an integer which is bigger than all the elements to its right.

2. Пример 

Input

Output

1 4 3 2

4 3 2

14 24 3 19 15 17

24 19 17

27 19 42 2 13 45 48

48

Имам проблем със задача 05. Top Integers от раздел "Arrays" - Еxcercise, като не печатам последната цифра, защото няма след това, не мога да измисля логика да печата и последната цифра от дадения масив.

И моя код : https://pastebin.com/pKp8g03u

 

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

Тагове:
0
Fundamentals Module
arjunah avatar arjunah 9 Точки

Здравей, проблемът е в булевата променлива - началната ѝ стойност е false и затова при последната итерация на първия цикъл (когато i = array.Length - 1 и се пропуска вътрешния цикъл (понеже j = i + 1 и j < array.Length)) булевата променлива си остава false, въпреки че за последното число от масива тя трябва винаги да е true, за да се отпечата и то при изхода. Ако я промениш с начална стойност true и смениш знака на проверката if (array[i] <= array[j]) ,тогава всичко ще си дойде на мястото. (Тук вмъквам, че числото трябва да е само >, а не >= на някое от следващите, за да е top integer)

Ето и точно какво имам предвид:

           bool isBigger = true;
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i] <= array[j])
                    {
                        isBigger = false;
                    }
                }

Тествах кода ти така и дава 100/100 в Judge :-)

0
VasilKotsev avatar VasilKotsev 830 Точки

ЕДИТ: В грешка съм, не дочетох условието.

Май не сте научили добре тези цикли в бейсикс... Прекалено много усложнявате задачата сами с тези вложени цикли.

Няма ли да е по-лесно така:

for (int i = 0; i < array.Length - 1; i++)
{
    bool isBigger = array[i] > array[i + 1];

    if (isBigger)
    {
        Console.Write(array[i] + " ");
    }
}

Console.Write(array[array.Length - 1] + " ");

Защо ви е да въртите ненужни итерации ?

0
06/02/2019 21:20:53
ddragov avatar ddragov 6 Точки

Здравей,

само като допълнение аз бих добавил един break, за да не върти излишно цикъла след като вече е намерил число което е по-голямо от предходното.

bool isBigger = true;
                for (int j = i + 1; j < array.Length; j++)
                {
                    if (array[i] <= array[j])
                    {
                        isBigger = false;
                        break;
                    }
                }

 

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