- Вывод нечётных элементов массива через запятую Java
- 7 ответов 7
- Вывод нечётных элементов массива через запятую
- 5 ответов 5
- Вывести нечетные значения массива
- Нахождение четных элементов массива
- C#: Массивы, четные и нечетные элементы
- Массивы
- Упражнения
- A: Четные индексы
- B: Четные элементы
- C: Количество положительных
- D: Больше предыдущего
- E: Соседи одного знака
- F: Больше своих соседей
- G: Наибольший элемент
- H: Наименьший положительный
- I: Наименьший нечетный
- J: Шеренга
- K: Количество различных элементов
- L: Вывести в обратном порядке
- M: Переставить в обратном порядке
- N: Переставить соседние
- O: Циклический сдвиг вправо
- P: Переставить min и max
- Q: Удалить элемент
- R: Вставить элемент
- S: Количество совпадающих пар
- T: Уникальные элементы
- U: Количество различных элементов — 2
- V: Самое частое число
- W: Сжатие массива
- X: Кегельбан
- Y: Ферзи
- Z: Большой сдвиг
Вывод нечётных элементов массива через запятую Java
помогите, пожалуйста, разобраться : есть метод printOddNumbers, который принимает массив и выводит в консоль только нечетные числа из него, через запятую. Конец вывода должен перевести курсор на новую строку.
Пример ввода: [3,5,20,8,7,3,100]
Пример вывода: 3,5,7,3
У меня на выходе получается : 3,5,7,3,
То есть мне нужно убрать последнюю запятую.
Помогите, пожалуйста, как можно убрать запятую в конце?
Также у меня не работает этот код в случае если элементы массива отрицательные. Помогите, пожалуйста, найти баг. Заранее спасибо.
Ссылка на онлайн-компилятор с кодом:
7 ответов 7
Помогите, пожалуйста, как можно убрать запятую в конце?
А зачем вы ее добавляете?
для каждого элемента в конце добавляется запятая. Тут есть три решения
После цикла удалять из StringBuilder последнюю запятую
Добавлять запятую перед элементом для всех, кроме первого
не работает этот код в случае если элементы массива отрицательные
Потому, что остаток от деления отрицательного нечетного числа на 2 будет -1 . Поэтому если проверку на нечетность переписать вот так
то код будет работать как с положительными, так и с отрицательными числами
Кроме того, при таком цикле
вы будете пропускать последний элемент массива. Цикл должен быть таким
Источник
Вывод нечётных элементов массива через запятую
Напишите метод printOddNumbers , который принимает массив и выводит в консоль только нечётные числа из него через запятую. Конец вывода должен перевести курсор на новую строку.
Пример ввода: [3,5,20,8,7,3,100]
Пример вывода: 3, 5, 7, 3
Вывод такой: 5, 5, 5, 5, 5,
Я не могу понять, как оформить решение так, чтобы последняя запятая не выводилась, наверное, я уже устал и не вижу очевидного решения. Буду благодарен, если кто-то также подскажет решение покороче.
5 ответов 5
Очевидно, что лучшим вариантом является вариант с поиском первого нечётного числа (8),
ну либо вариант с Regex (10), если вы извращенец.
(1) Вариант со стримом-фильтровальщиком.
Варианты со списком.
(3) Объединение элементов вручную.
(4) Объединение с помощью метода String.join(CharSequence, Iterable ) . (видоизменённая реализация Qwertiy)
(5) Вариант с обрезанием возвращаемого значения метода List.toString() .
(6) Вариант со StringJoiner .
(7) Вариант с boolean переменной.
(8) Вариант с поиском первого нечётного числа. (Самый быстрый)
(9) Вариант с поиском последнего нечётного числа.
Варианты с обрезанием запятой.
(12) Последней. (Идея rjhdby)
(13) Вариант с сепаратором. (Идея aleksandr barakin)
(14) Вариант с компиляцией строки при помощи методов анонимного класса.
(15) Варианты с рекурсией и обрезанием массива с начала.
(На самом деле есть ещё два варианта с обрезанием массива с конца, но они настолько похожи на эти, что я решил их не включать)
С помощью индекса.
С помощью копирования массивов.
(16) Варианты с рекурсией и ополовиниванием массива.
С помощью индексов.
С помощью копирования массивов.
(17) Вариант с созданием нового массива из нечётных чисел вручную.
(18) Вариант с проверкой длины (пустоты) StringBuilder(а) .
(19) Вариант с двойным пробеганием массива и сохранением количества нечётных чисел.
(20) Вариант с пробеганием массива с двух сторон.
(21) Вариант с пробеганием массива в обе стороны из середины.
(22) Совсем ненормальный вариант с regex и двумя стримами один в другом.
(23) Вариант с вырезанием всех чётных чисел.
(24) Вариант с переносом всех нечётных чисел в начало массива.
(25) Вариант с конечным автоматом.
Источник
Вывести нечетные значения массива
Нахождение четных элементов массива
Итак формулировка задачи такова «найти все четные элементы массива, вывести на экран, и подсчитать их количество».
Для начала определим, что такое четное число вообще? правильно, четными числами называются числа, которые делятся на 2 без остатка (иногда еще говорят кратны 2).
Теперь определимся как это реализовать. В паскале есть такой замечательный оператор mod, который нам как раз и необходим. Сей оператор отвечает за деление с остатком, а если быть точнее, применив данный оператор, вы получаете остаток от деления. Например 11 разделить на 2. Использовав mod мы получим в ответе число 1.
Теперь как это все записать в паскале. Пусть переменная х — это остаток
Вернемся к нашей задаче, где нас интересует нахождение четных элементов массива. Для ее решения нужно подойти к составлению кода логически .
Каков остаток при делении четного числа на 2? Верно, остаток всегда равен нулю. (Подробнее о четности вы можете прочесть в статье оператор div и оператор mod) То есть нам просто нужно использовать цикл с условием вида
Ну а теперь код всей задачи (как в помните нам еще было необходимо подсчитать количество четных чисел и вывести их всех на экран)
var i,x,y:integer;s:array [1..10] of integer;
begin
for i:=1 to 10 do
read(s[i]);
for i:=1 to 10 do
if s[i] mod 2=0 then begin
writeln (s[i]);
y:=y+1;
end;
writeln;
writeln(‘количество четных чисел = ‘,y)
end.
Источник
C#: Массивы, четные и нечетные элементы
Задача:
Массив создается вводом с консоли чисел по одному добавлением числа к списку из целых или вещественных чисел по варианту задания. По варианту формируется новый список. Вывод списка выполняется в строку или столбец.
Дан целочисленный массив размера N. В массиве B вначале идут все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а затем — все нечетные числа в порядке убывания их индексов.
Решение:
Чтобы лучше понять задачу рассмотрим пример, пусть дан массив 6 3 2 1 7 8. В результате должен быть сформирован новый массив, в начале которого находятся все четные элементы (6 2 8), а в конце – нечетные в обратном порядке (7 1 3). Таким образом результатом должен быть массив 6 2 8 7 1 3. Отсюда, возможны различные варианты реализации такого алгоритма:
- Сначала пройти по массиву A от начала до конца и переписать в массив B четные элементы, а затем пройти еще раз от конца до начала и переписать нечетные;
- Завести 2 индекса – один для четных элементов (начальное значение 0), а второй – для нечетных (начальное значение n-1). При обработке каждого элемента массива A записывать его либо по одному индексу, либо по второму и изменять его значение (уменьшать для нечетных и увеличивать для четных).
Реализация второго варианта:
Выделена функция вывода массива на экран, т.к. это потребуется делать для двух массивов (дважды) – создание функции уменьшит дублирование кода. Эта функция, помимо массива и размера, принимает «имя массива».
Алгоритм, реализованный в главной функции объяснен на примере выше. Результаты работы программы для этого примера приведены на рисунке.
Источник
Массивы
Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.
— это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый ), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.
Массив в языке C++ задается следующим образом:
где тип_элементов — произвольный тип данных языка C++, который будут иметь элементы массива, например, int , double и т.д.; идентификатор — имя массива, размер — число элементов в нем.
По стандарту языков C и C++, размер массива должен быть константой, определенной на момент компиляции программы, то есть можно определить массив в виде int A[10 + 5] , но нельзя это сделать в виде int A[n] . Однако, компилятор gcc, которым мы пользуемся, допускает объявления второго вида, но при этом нет никаких гарантий, что ваша программа будет откомпилирована каким-либо другим компилятором.
К элементу массива можно обращаться, как идентификатор [ индекс ] . Например, если было сделано объявление
то таким образом создается 5 элементов массива типа double : A[0] , A[1] , A[2] , A[3] , A[4] .
Пример программы, которая создает массив типа int[] , заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива число 1 , затем выводит результат на экран:
В этом примере при помощи // обозначается начало комментария, весь текст после начала комментария и до конца строки компилятором игнорируется. Второй способ объявления комментария: в начале комментария поставить знаки /* , а в конце – */ . Это позволяет делать комментарии, занимающие несколько строк. В языке C допустимы только такие комментарии. ::min()>@w< >— минимальное значение типа @code
Упражнения
Во всех задачах этого листка (кроме X и Y) небходимо что-то сделать с заданным массивом. Массив вводится, как в примере выше: сначала размер массива, затем его элементы. Программа должна считать массив целиком, выполнить то, что требуется сделать с массивом, вывести результат на экран. Даже если для решения задачи массив не требуется, программа всё равно должна целиком считать массив и сохранить его в памяти.
Все массивы – числовые типа int[] .
A: Четные индексы
Выведите все элементы массива с четными индексами (то есть A[0] , A[2] , A[4] , . ).
Программа должна быть эффективной и не выполнять лишних действий!
Ввод | Вывод |
---|
B: Четные элементы
Выведите все четные элементы массива.
Ввод | Вывод |
---|
C: Количество положительных
Найдите количество положительных элементов в данном массиве.
Ввод | Вывод |
---|
D: Больше предыдущего
Дан массив. Выведите все элементы массива, которые больше предыдущего элемента.
Ввод | Вывод |
---|
E: Соседи одного знака
Дан массив. Если в нем есть два соседних элемента одного знака, выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую пару.
Ввод | Вывод |
---|
F: Больше своих соседей
Дан массив. Определите, сколько в этом массиве элементов, которые больше двух своих соседей и выведите количество таких элементов.
Ввод | Вывод |
---|
G: Наибольший элемент
Выведите значение наибольшего элемента в массиве
Ввод | Вывод |
---|
H: Наименьший положительный
Выведите значение наименьшего из всех положительных элементов в массиве. Известно, что в массиве есть хотя бы один положительный элемент, а значения всех элементов массива по модулю не превосходят 1000.
Ввод | Вывод |
---|
I: Наименьший нечетный
Выведите значение наименьшего нечетного элемента массива, а если в массиве нет нечетных элементов — выведите число 0 .
Ввод | Вывод |
---|
J: Шеренга
Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.
Программа получает на вход число N – количество человек в классе. Затем невозрастающая последовательность из N чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.
Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.
Ввод | Вывод |
---|
K: Количество различных элементов
Дан массив, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.
Ввод | Вывод |
---|
L: Вывести в обратном порядке
Выведите элементы данного массива в обратном порядке, не изменяя сам массив.
Ввод | Вывод |
---|
M: Переставить в обратном порядке
Переставьте элементы данного массива в обратном порядке, затем выведите элементы данного массива.
Эта задача отличается от предыдущей тем, что вам нужно изменить значения элементов самого массива, поменяв местами A[0] c A[n-1] , A[1] с A[n-2] , а затем вывести элементы массива, начиная с A[0] .
Ввод | Вывод |
---|
N: Переставить соседние
Переставьте соседние элементы массива ( A[0] c A[1] , A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.
Ввод | Вывод |
---|
O: Циклический сдвиг вправо
Циклически сдвиньте элементы массива вправо ( A[0] переходит на место A[1] , A[1] на место A[2] , . последний элемент переходит на место A[0] ).
Используйте минимально возможное количество операций присваивания.
Ввод | Вывод |
---|
P: Переставить min и max
В массиве все элементы различны. Поменяйте местами минимальный и максимальный элемент этого массива.
Ввод | Вывод |
---|
Q: Удалить элемент
Дан массив из N элементов и номер элемента в массиве k. Удалите из массива элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.
Программа получает на вход число N, затем N элементов массива, затем число k.
Программа должна вывести N-1 число – элементы массива после удаления k–го элемента.
Программа должна осуществлять сдвиг непосредственно в массиве, а не делать это при выводе элементов. Также нельзя использовать дополнительный массив.
Ввод | Вывод |
---|
R: Вставить элемент
Дан массив из N чисел, число k и значение C. Необходимо вставить в массив на позицию с индексом k элемент, равный C, сдвинув все элементы имевшие индекс не менее k вправо.
Посколько при этом количество элементов в массиве увеличивается, необходимо сразу же создавать массив размером N+1.
Вставку необходимо осуществлять уже в считанном массиве, не оставляя “свободного” места при считывании, не делая этого при выводе и не создавая дополнительного массива.
Ввод | Вывод |
---|
S: Количество совпадающих пар
Дан массив. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.
Ввод | Вывод |
---|
T: Уникальные элементы
Дан массив. Выведите те его элементы, которые встречаются в массиве только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в массиве.
Ввод | Вывод |
---|
U: Количество различных элементов — 2
Дан массив. Посчитайте, сколько в нем различных элементов, не изменяя самого массива.
Ввод | Вывод |
---|
V: Самое частое число
Дан массив. Не изменяя массива и не заводя дополнительного массива определите, какое число в этом массиве встречается чаще всего.
Если таких чисел несколько, выведите любое из них.
Ввод | Вывод |
---|
W: Сжатие массива
Массив заполнен целыми числами. Требуется “сжать” его, переместив все ненулевые элементы в левую часть массива, не меняя их порядок, а все нули — в правую часть. Порядок ненулевых элементов изменять нельзя, дополнительный массив использовать нельзя, задачу нужно выполнить за один проход по массиву. Распечатайте полученный массив.
Ввод | Вывод |
---|
X: Кегельбан
\(N\) кеглей выставили в один ряд, занумеровав их слева направо числами от \(1\) до \(N\). Затем по этому ряду бросили \(K\) шаров, при этом \(i\)-й шар сбил все кегли с номерами от \(l_i\) до \(r_i\) включительно. Определите, какие кегли остались стоять на месте.
Программа получает на вход количество кеглей \(N\) и количество бросков \(K\). Далее идет \(K\) пар чисел \(l_i\), \(r_i\), при этом \(1\le l_i\le r_i\le N\).
Программа должна вывести последовательность из \(N\) символов, где \(j\)-й символ есть “ I ”, если \(j\)-я кегля осталась стоять, или “ . ”, если \(j\)-я кегля была сбита.
Ввод | Вывод |
---|
Y: Ферзи
Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
Программа получает на вход восемь пар чисел, каждое число от 1 до 8 — координаты 8 ферзей. Если ферзи не бьют друг друга, выведите слово NO , иначе выведите YES .
Ввод | Вывод |
---|
Z: Большой сдвиг
Дан массив из \(N\) (\(1 \le N \le 100000\)) целых чисел и число \(K\) (\(|K|
Источник