Я делаю собственный плоттер (plot0
), который записывает непосредственно в выходной поток char за символом, строка за строкой:
private static void plot0(final int... numbers) {
final int cols = numbers.length;
final IntSummaryStatistics stat = Arrays.stream(numbers).summaryStatistics();
final int max = stat.getMax();
final int min = stat.getMin();
final int rows;
if (min < 0) {
rows = Math.max(0, max) + ~min + 2;
} else {
rows = max;
}
for (int i = 0; i < rows; i++) {
final int val = Math.max(0, max) - i;
if (0 == val) {
continue; // do not plot zero
}
for (int j = 0; j < cols; j++) {
final int num = numbers[j];
System.out.print(
0 < num && 0 < val && num >= val
|| 0 > num && 0 > val && num <= val
? '*'
: ' ');
}
System.out.println();
}
}
Я внес небольшие изменения в ваш код (переименуйте в plot1
), но в основном оригинальное мышление работает.
Arrays.deepToString(tempArray[i])
на new String(tempArray[i])
' '
в Arrays.fill(tempArray[i], ' ');
'*'
значений, а не до '*'
переопределяют [ 1110], поэтому вы не можете писать напрямую на выход. private static void plot1(final int... array) {
int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;
for (final int element : array) {
if (element > max) {
max = element;
}
if (element < min) {
min = element;
}
}
if (min < 0) {
min *= -1;
}
final char[][] tempArray = new char[array.length][max + min + 1];
for (int i = 0; i < tempArray.length; i++) {
Arrays.fill(tempArray[i], ' ');
if (array[i] > 0) {
for (int j = min + 1; j <= min + array[i]; j++) {
tempArray[i][j] = '*';
}
} else if (array[i] < 0) {
for (int j = min - 1; j >= min + array[i]; j--) {
tempArray[i][j] = '*';
}
}
System.out.println(new String(tempArray[i]));
}
}
Delphi или Разработчик C++ - это - трудный выбор!
, Поскольку Вы знаете, они в основном очень похожи с точки зрения RAD и IDE.
за и против каждого - независимо от фона - немного похожи на это. Оба совместно используют большой конструктор форм RAD с 2 путями и платформу (VCL), которые идеальны для собственной разработки Windows.
Delphi:
Разработчик C++
, Это об этом. Только для утверждения моего положения я - счастливый пользователь BCB2007/2009 (начиная с BCB5), и я также нечасто использую Delphi. Несколько лет назад, я рассмотрел переключатель от C++ до Delphi, но отсутствие идиомы RAII было одной вещью, которую я нашел трудным достигнуть соглашения с.
Пойдите с Delphi, и можно использовать сборщик "мусора" API Boehm, записанный Barry Kelly , таким образом, у Вас может быть сборка "мусора" в Delphi. Barry записал это, прежде чем он пошел для работы на CodeGear как архитектор компилятора. Это действительно имеет проблемы с действительно крупными приложениями и скорее всего не будет работать с 64-разрядным Delphi. Он говорит об этом вполне немного в этом интервью подкаста .
, Даже если бы Вы не используете того собирающего "мусор" диспетчера памяти, я все еще рекомендовал бы Delphi по C++. Единственным преимуществом, которое C++ дает Вам для общей разработки, является изогнутый синтаксис фигурной скобки. Если Вы не будете возражать против синтаксиса Delphi, то для большинства вещей Вы найдете его лучше. У предоставленного Разработчика C++ есть целый Delphi VCL и RTL, таким образом, это не настолько плохо как Visual C++, но я все еще думаю, что Delphi был бы лучшим выбором.
For дополнения Excel (поскольку Вы упомянули в своем комментарии) я рекомендую Delphi по разработчику C++, потому что он имеет лучше поддержку COM (который я полагаю, что Вам нужно для дополнений Excel).
Конечно, синтаксис Java больше похож на C++, чем подобный Дельфи, но я думаю, что объектная модель более подобна Дельфи:
, можно найти статью, сравнивающую эти три языка здесь
Если Вы собираетесь сделать большое программирование Windows, изучить C++. Вы выучили бы немецкий язык при подготовке к прохождению во Францию? C/C++ является родным языком Windows API. Контакт со структурами данных WinAPI и вызовами настолько более прост в C/C++. Относительно RAD, я использовал MSVC в течение приблизительно 13 лет, и я могу хлестать вместе приложение для GUI так же быстро как кто-либо использующий редактора GUI Visual Studio.
Нет ничего, что я не смог сделать в C++ VCL, который я не мог сделать с Delphi, VCL и почти все компоненты Delphi хорошо работают в Разработчике C++. Так как я программирую и для Windows и для UNIX, C++ является более портативным.
при использовании C++ STL или другая хорошо разработанная библиотека для контейнеров вид сборки "мусора" становится спорным вопросом, и в других отношениях ручной GC не является трудным (каждый быстро изучает хорошие привычки - который необходимо практиковать так или иначе независимо от GC). Пока Вы используете RAII, если это возможно, сохраните свое управление памятью инкапсулировавшим в контейнерах, быть ясными на монопольном использовании объекта и только использовать указатели в качестве способных иметь значение NULL ссылок (все из которых необходимо также делать безотносительно на языке), GC действительно не должен быть проблемой.
Одна вещь я забыл упоминать прежде:
С точки зрения стоимости, Вы не делаете действительно потребность для выбора. Купите пакет RAD Studio , и для скромных дополнительных расходов по одному отдельному языку, Вы получаете и Delphi и Разработчик C++ личности в том же IDE.
И, стоит упомянуть, что Разработчик C++, пакет включает компилятор Delphi, и можно писать/добавлять Delphi .pas файлы и включать их как часть проектов C++.
Я программирую профессионально в Delphi в течение прошлых 10 лет и имею хорошее знание C++. Я пошел бы к Delphi путем. Синтаксис является намного более простым и управлением памятью также. Тот GC для собственного Delphi, который я не имею, слышал все же... Хотя мне не нравилось много прерывания на Delphi. Сетевой код представил из-за gc.NET, я очень не люблю gcs ;-)
"Например, Delphi IDE является полностью долбаным' потрясающий для создания графический интерфейсов пользователя способом WYSIWYG. Я не использовал разработчика C++ IDE, но я был бы действительно удивлен, имеет ли он разработчика GUI, это так же хорошо как Delphi".
На самом деле Разработчик C++ редактор GUI является точно тем же редактором и работает таким же образом. Это фантастически.
.NET имеет огромное количество классов, во многом как Java. C# имеет подобный синтаксис к Java, и из-за огромной библиотеки классов работает справедливо так же. И это - совершенно соответствующая среда к программе в. Но откровенно Delphi является намного более приятным языком, IDE и общей средой для работы с. C# был разработан тем же человеком, который разработал Delphi и "чувствует себя" очень похожим во многих отношениях, не предполагайте, что, потому что Delphi компилирует в собственный код (хотя можно использовать Delphi .NET также) существенно более трудно использовать. Это не, вообще.
Моя персональная рекомендация была бы для Delphi, потому что это - прохладный язык. Однако, если Вы интересуетесь изучением C++, Разработчик C++ является, вероятно, самым хорошим способом, которым Вы могли бы сделать это.
Я думаю, идете ли Вы с Delphi, Вы найдете это более легче после несколько раз использования, также это имеет больше сторонней поддержки и некоторые функции, представленные в Delphi, прежде чем Разработчик C++
также прочитал этот блог из экс-Java и теперь парня позади большей части базы данных и работы datasnap в Delphi Steve Shaughnessy, о его опыте о программировании Delphi после 10 лет Java :-) http://blogs.codegear.com/steveshaughnessy/2006/12/03/30193
Лично, я думаю, что существуют другие важные факторы кроме различий между языками. Например, Delphi IDE является полностью долбаным' потрясающий для создания графический интерфейсов пользователя способом WYSIWYG. Я не использовал разработчика C++ IDE, но я был бы действительно удивлен, имеет ли он разработчика GUI, это так же хорошо как Delphi.
, Хотя поверхностно синтаксис C++ больше походит на синтаксис Java, объектная модель Delphi на самом деле ближе к тому из Java. Хотя указатели существуют в Delphi в ссылках на объект практики (как те, которые в Java), используются 99% времени. Даже в современном C++, я не думаю, что возможно избежать указателей. Не то, чтобы существует что-то не так с указателями по сути, но на практике....
На личном сообщении, я - главным образом парень Java в эти дни, но я провел 2 года, работая с Delphi и вернусь к нему в heartbeat. Напротив, я имею только очень ограниченный опыт с C++ и предпочел бы чистить туалеты, чем возврат на тот язык :)
После работы с Borland C++ и компиляторами C++ начиная с BCC 4.1/DOS и Delphi от 3,0 до 2007 я могу сказать Вам честно, что Вы находитесь в для большого приключения так или иначе. При перемещении от C/C++ в Разработчика Borland и RAD, IDE является существенным сдвигом парадигмы (и кривая обучения) от VC Microsoft ++, C++ и.NET (использовали VC от первого выпуска MS-DOS - бежевые три звонят мини-редакторы связей).
выбором между C++ и Delphi является тот, который я предлагаю, чтобы Вы сделали после того, чтобы намочить ноги на нескольких малых и средних размерных проектах на обоих языках. Я начал программиста C и приблизительно после пяти лет, переключенных на Delphi (V3.0), когда VCL просто сделал Windows, программируя намного легче и более продуктивный.
быть предупрежденным, Delphi является обольстительным языком для программистов, происходящих из других языков как КОБОЛ, ФОРТРАН, VisualBasic, потому что его синтаксис и правила кода осуществляют своего рода дисциплину, которая не допускает один в проблему. Краткость и необработанное металлическое питание C делают это большим системным языком программирования (драйверы устройств, код O/S, встроенное программирование в реальном времени), но в неопытных руках это может укусить Вас.
Разработчик C++ Borland (VCL Delphi, добавленный к компилятору C++), берет многий из резкого края C++ прочь и является моим вторым любимым языком. Так как Borland добавила поддержку.NET обоим языкам существует веский довод для использования Разработчика вместо VC ++ для программирования платформы MS. Хотя C# имеет хорошую сумму 'дружелюбия', встроенного по сравнению с C++, если продвинуто я все еще придерживался бы Delphi или Разработчика, если бы я только начинал.
Для того, чтобы знать досконально, для разработки прототипа и быстрых программ понятия там просто не язык там, который может разбить Delphi особенно VCL и сторонними компонентами. Никакая шумиха, просто факты.
Delphi будет намного легче для Вас достигнуть соглашения с, уверенный, что необходимо управлять памятью, но его очень простое
MyObj = TMyObj.Create;
try
MyObj.DoSomething;
finally
MyObj.Free;
end
В Delphi, все объекты выделяются на "куче", таким образом, правило очень просто, при создании его, Вы освобождаете его.
C++ с его стеком и "кучей" базирующийся objs означает, что Вы имеете немного больше для изучения и больше объема для того, чтобы попасть в беду.