Меню

Вывести нечетные значения массива

Вывод нечётных элементов массива через запятую Java

помогите, пожалуйста, разобраться : есть метод printOddNumbers, который принимает массив и выводит в консоль только нечетные числа из него, через запятую. Конец вывода должен перевести курсор на новую строку.

Пример ввода: [3,5,20,8,7,3,100]

Пример вывода: 3,5,7,3

У меня на выходе получается : 3,5,7,3,

То есть мне нужно убрать последнюю запятую.

Помогите, пожалуйста, как можно убрать запятую в конце?

Также у меня не работает этот код в случае если элементы массива отрицательные. Помогите, пожалуйста, найти баг. Заранее спасибо.

Ссылка на онлайн-компилятор с кодом:

7 ответов 7

Помогите, пожалуйста, как можно убрать запятую в конце?

А зачем вы ее добавляете?

для каждого элемента в конце добавляется запятая. Тут есть три решения

После цикла удалять из StringBuilder последнюю запятую

Добавлять запятую перед элементом для всех, кроме первого

  • Добавлять нужные элементы в список, а потом вызвать Arrays.toString(tmpList)
  • не работает этот код в случае если элементы массива отрицательные

    Потому, что остаток от деления отрицательного нечетного числа на 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.

    Читайте также:  Streamlabs как вывести донат

    Теперь как это все записать в паскале. Пусть переменная х — это остаток

    Вернемся к нашей задаче, где нас интересует нахождение четных элементов массива. Для ее решения нужно подойти к составлению кода логически .
    Каков остаток при делении четного числа на 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 —> ::max()>@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|

    Источник