Arrays Workshop Sort Numbers

tasks

#1

Здравейте, успешно приключих уъркшопите докато не се сблъсках с масивите и запецнах още на първата задача. :slight_smile:

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

Бъркам някъде генерално и не мога да продължа напред. Ще съм благодарен на насоки!

Благодаря!


#2

Здравей Теди,

отностно точно тази задача (Sort numbers) имаш няколко варианта:

  • можеш да разучиш как се използва ArrayList;
  • може да прочетеш числата като String-ов масив и да ги разделиш;

Успех :slight_smile:


#3

Гледах го това със стринговете, но по-скоро ми бяга цялото нещо.

Ще прочета това за ArrayList.

Предполагам се ползва адски често, защото в реалния живот масивите не знаем с колко точно стойности ще са, нали?


#4

И аз започвам от началото. Най-вече как се създава масив, тип на данните в него, въвеждане на променливите, определяне на големината и в последствие достъпване на променливите при някакви условия. Вече тези условия: или някаква “for-for” конструкция; “while”…там вече почва да превърта системата.


#5

Здравейте,

https://pastebin.com/3uLwgXxy - ето кодът ми.

Принтирам правилно, но как мога да премахна скобите от двете страни?

Благодаря!


#6

Здравей Теди,

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

Успех :slight_smile:


#7

https://pastebin.com/MPLahwiq - в ИДЕ-то работи, но в Judge не.

Също така имам проблем с кода, защото като се впишат двуцифрени числа - греда.

Логиката ми правилна ли е, че тази задача първо трябва да поеме Стринг, който след това да се парсне към инт?

Пробвах с Интеджер АрейЛист, но се счупва, защото инпутът на един ред го приема като Стринг. В Интеджер масивите .сплит не работи като метод.

Продължавам да цикля. :slight_smile:


#8

Здравей Теди,

Пробвай какво ще изпринтираш ако входа е -1,0,1 и ще разбереш, защо се чупи кода.

Помисли, как да се справиш с тази част от задачата и всичко ще е 100/100.

Поздрави,

Мишо


#9

Да, видях. Една запетайка бях изпуснал.

Обаче това не решава проблема, когато се сравняват двуцифрени числа.


#10

Ето решение на твоя проблем:

string input = Console.ReadLine();
int[] arr = input.Split(’,’).Select(x => int.Parse(x)).ToArray();

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


#11

Реших задачата - ето и кодът. https://pastebin.com/DYakVEUW

Като цяло ми се струва безумно тежко решението ми - създавам три масива. :smiley:

Също така не разбирам на ред 14 и 20 защо for loop брояча ми е .lenght, а не length - 1 както би трябвало да е.

Като го оставих на .length мина напълно през Judge.


#12

ЗдравейТеди,

Това се получава понеже двата цикъла въртят до по малко от array.Length.

Ако имаш array.Length= 10 и му дадеш да върти от 0 до i < array.Length, реално ще извърти (0,1,2,3,4,5,6,7,8,9), което реално са точно 10 итерации.

Ако имаш Array в който има само един елемент, неговия индекс ще е [0], а array.Length ще е равен на 1.

Моя съвет е, като се чудиш защо става нещо да debug-ваш.

Поздрави,

Мишо


#13

Refer this resource on arraylist in java.