Последний элемент с четным номером как найти

1 / 1 / 0

Регистрация: 22.12.2019

Сообщений: 36

1

Номер последнего чётного элемента массива, как определить?

04.03.2020, 18:43. Показов 3606. Ответов 11


Студворк — интернет-сервис помощи студентам

Приветствую, по учёбе проходится тема с массивами, не могу понять, как определить последний чётный элемент в массиве и вывести его индекс, прошу помощи. Спасибо.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

04.03.2020, 18:43

11

1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

04.03.2020, 18:46

2

del



0



Diamante

3457 / 2464 / 1170

Регистрация: 14.08.2016

Сообщений: 8,158

04.03.2020, 18:50

3

Лучший ответ Сообщение было отмечено sancez2 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
            var array = new[] { 1, 2, 3, 4, 5 };
            for (int i = array.Length - 1; i >= 0; i--)
            {
                if (array[i] % 2 == 0)
                {
                    Console.WriteLine(i);
                    break;
                }
            }



0



QuakerRUS

1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

04.03.2020, 18:57

4

C#
1
Console.WriteLine(m.Select((x, i) => (x, i)).Where(x => x.Item1 % 2 == 0).Last().Item2);



0



1 / 1 / 0

Регистрация: 22.12.2019

Сообщений: 36

04.03.2020, 19:08

 [ТС]

5

Diamante, а как в данной ситуации к i добавить ещё одну единицу?



0



Enifan

1841 / 1183 / 501

Регистрация: 14.10.2018

Сообщений: 3,179

04.03.2020, 19:16

6

Цитата
Сообщение от sancez2
Посмотреть сообщение

к i добавить ещё одну единицу

C#
1
Console.WriteLine(i + 1);



0



sancez2

1 / 1 / 0

Регистрация: 22.12.2019

Сообщений: 36

04.03.2020, 19:20

 [ТС]

7

При i + 1 добавляется непонятно что.

Вот сам код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
static void Main(string[] args)
        {
            Console.WriteLine("Нажмите любую клавишу для начала выполнения программы.");
            Console.ReadLine();
            Console.Clear();
            Console.Write("Введите количество элементов массива: ");
            int k = Convert.ToInt32(Console.ReadLine());
            int[] N = new int[k];
            Console.WriteLine("Введите элементы: ");
            for (int i = 0; i < k; i++)
            {
                N[i] = Convert.ToInt32(Console.ReadLine());
            }
            Console.WriteLine();
            Console.WriteLine("Массив: ");
            for (int i = 0; i < k; i++)
            {
                Console.Write(" ");
                Console.Write(N[i] + " ");
            }
            Console.WriteLine("");
            Console.WriteLine("");
 
            for (int i = N.Length - 1; i >= 0; i--)
            {
                if (N[i] % 2 == 0)
                {
                    Console.WriteLine(N.Where(x => x % 2 == 0).Last() + "(" + i + 1 + ")");
                    break;
                }
            }
            Console.ReadKey();
        }
    }
}



0



1841 / 1183 / 501

Регистрация: 14.10.2018

Сообщений: 3,179

04.03.2020, 19:42

8

sancez2, не, вы не поняли, вам дали 2 разных кода из 3 и 4 постов, а вы их смешали. Используйте что то одно.



0



1 / 1 / 0

Регистрация: 22.12.2019

Сообщений: 36

04.03.2020, 20:41

 [ТС]

9

Просто первый код выводит сам элемент, а в второй его номер, вот я и подумал. Работает всё правильно, как нужно, в случае, если отсчет в массиве начинается с нуля, без использования i + 1 выводится верный номер, если считать с нуля.

Добавлено через 18 минут
А, всё, я разобрался, всё работает, просто нужно было (i + 1) прописывать в скобках.



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

04.03.2020, 23:42

10

Цитата
Сообщение от sancez2
Посмотреть сообщение

Просто первый код выводит сам элемент

Нет, он выдает индекс.

sancez2, если используете мой код, то строки 24-27 и 29-31 лишние.

Цитата
Сообщение от sancez2
Посмотреть сообщение

i + 1

Не забывайте, что индексы в C# начинаются с нуля.



0



1 / 1 / 0

Регистрация: 22.12.2019

Сообщений: 36

05.03.2020, 00:17

 [ТС]

11

Я использовал только код из первого сообщения, которое Вы удалили, чтобы вывести сам элемент массива, а потом взял уже другой код от Diamante, т.е. я объединил их. Насчёт элементов массива, я писал о том, что не пойму, как добавить единицу, т.к. нумерация начинается с нуля, она добавлялась просто доп. элементом справа, а потом понял, что i + 1 нужно записать в скобках, так что всё нормально, спасибо) Глядя на косяки, ничего страшного особо нет в этом, эти работы делаются для сдачи на учёбе)



0



1467 / 1008 / 456

Регистрация: 30.10.2017

Сообщений: 2,793

05.03.2020, 00:35

12

Цитата
Сообщение от sancez2
Посмотреть сообщение

т.е. я объединил их

Этого не стоило делать, по крайней мере сделали вы это неверно.

Цитата
Сообщение от sancez2
Посмотреть сообщение

эти работы делаются для сдачи на учёбе

Ну, если у вас преподаватель принимает некорректные решения, то тогда ладно.



0



Как найти последний четный и нечетный элемент?

Как найти последний четный и нечетный элемент?
через css можно? или только js?


  • Вопрос задан

    более двух лет назад

  • 173 просмотра



1

комментарий


Решения вопроса 1

Kozack

Alex

@Kozack Куратор тега CSS

Thinking about a11y

Думаю как-то так:

element:nth-last-child(1), 
element:nth-last-child(2) { }


Комментировать

Пригласить эксперта


Похожие вопросы


  • Показать ещё
    Загружается…

19 мая 2023, в 00:55

3000 руб./за проект

18 мая 2023, в 23:42

1800 руб./за проект

18 мая 2023, в 22:57

500 руб./за проект

Минуточку внимания

I want to find the index of the last element containing an even number in an array, A, with ‘length’ number of elements.
For example, for A = {1, 2, 4, 5, 7} we would return 2 as the value 4 is the last even number and it is at index 2 in the array.
I am required to use a for loop where the fewest number of elements need to be tested, where the first line follows the format:
for ( i = ??; i > ??; i = ??)

I think there’s something wrong with the first line of my code but I don’t know how to fix it.

for ( i = length-1; i >= 0; i =  i-1) { 
if ( A[i] % 2 == 0) { // value mod 2 = 0 indicates even
    return i;
}
error: subscripted value is neither array nor pointer nor vector
     'if (A[i]% 2==0) { // value mod 2 = 0 indicates even'

Gerhardh's user avatar

Gerhardh

10.7k3 gold badges13 silver badges36 bronze badges

asked May 16, 2019 at 7:28

user672518's user avatar

5

Here is how I would write it:

int num = -1;
for ( i = length-1; i > -1; i = i-1) {
  //Check if the array is even
  if( A[i] % 2 == 0 )

    // If it hasn't found an even number yet, automatically set num equal to the index
    // This avoids accessing the element in the "-1" position in the array which would
    //    give an error
    if( num == -1 )
      num = i;

    // If the element at the 'i' position is greater than the previous greatest element
    //   then set num equal to the index
    else if( A[i] > A[num] )
      num = i;
}

// It will return -1 if an even number isn't found
return num;

This will work if A is an array. It sounds like A currently isn’t the array you’re thinking it is; it may be an array of arrays or something similar. If you post the rest of your code it will help to resolve the error.

This answer may help you with your error

answered May 16, 2019 at 12:27

Sam Ventocilla's user avatar

Вступление

В этом руководстве мы рассмотрим некоторые из наиболее распространенных
способов найти последний элемент в списке в Python. Сначала мы
рассмотрим самый простой и наиболее питонический способ, а затем
покажем некоторые другие альтернативные решения.

Давайте посмотрим на список, который мы будем использовать:

 exampleList = [1, 2, "Three", ["Four", 5], 6] 

Примечание. Список в Python – это набор элементов, которые не
обязательно одного типа. Один список может содержать элементы, которые
являются числами, строками, вложенными списками и т. Д.

Как получить последний элемент в списке Python

Есть несколько способов получить последний элемент списка в Python –
некоторые из них более интуитивно понятны и практичны, чем другие, а
некоторые из них фактически изменяют исходный список на месте:

  • Использование отрицательной
    индексации – лучший
    подход
  • Использование индексации
  • Использование метода pop()
  • Использование нарезки
  • Использование обратного итератора
  • Использование метода reverse()
  • Использование itemgetter
  • Использование петель

Лучшее решение – использование отрицательной индексации

Python поддерживает понятие отрицательной индексации как метод
доступа к элементам списка. Это означает, что мы можем получить доступ к
элементам в обратном порядке , используя оператор []

Как работает индексация в списках, хорошо известно:

 firstElement = exampleList[0] 
 nthElement = exampleList[n-1] 
 ... 

Первый элемент имеет индекс 0 , второй имеет индекс 1 , а n й
элемент имеет индекс n-1 .

Отрицательная индексация следует той же логике, но в обратном порядке.
Последний элемент имеет индекс -1 , предпоследний элемент имеет индекс
-2 и так далее:

 lastElement = exampleList[-1] 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 
 
 secondToLast = exampleList[-2] 
 print("Second to last element: ", secondToLast) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 
 Second to last element: ['Four', 5] 

Отрицательная индексация не изменяет исходный список. Это всего лишь
способ доступа к элементам без каких-либо изменений в исходном списке.

Это, безусловно, самое простое и наиболее подходящее для Python решение.

Использование индексации

Простая индексация обычно используется для доступа к элементам в списке
в исходном порядке с помощью оператора [] Как описано выше, первый
элемент имеет индекс 0 , второй элемент имеет индекс 1 и так далее.
Зная это, мы можем сделать вывод, что последний элемент имеет индекс
len(exampleList)-1 :

 lastElement = exampleList[len(exampleList)-1] 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 
 
 secondToLast = exampleList[len(exampleList)-2] 
 print("Second to last element: ", secondToLast) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 
 Second to last element: ['Four', 5] 

Помимо отрицательной индексации, метод индексации используется только
для доступа к элементам списка без внесения каких-либо изменений в
исходный список.

Использование метода pop ()

В Python метод pop() используется для удаления последнего элемента
данного списка и возврата удаленного элемента.

Метод pop() может дополнительно принимать целочисленный аргумент.
Это индекс элемента, который мы хотим удалить, поэтому, если мы
вызовем exampleList.pop(0) , первый элемент будет удален и
возвращен.

Если аргумент – отрицательное число, будет выполнена логика
отрицательной индексации, чтобы определить, какой элемент удалить.
Вызов exampleList.pop(-1) приведет к удалению последнего элемента
examleList .

Хотя, поскольку метод pop() по умолчанию уже выталкивает последний
элемент
, нет никакой реальной необходимости использовать индексацию:

 lastElement = exampleList.pop() 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5]] 

Обратите внимание, что метод pop() по определению изменяет исходный
список
, удаляя всплывающий элемент.

Использование нарезки

В Python нотация срезов используется для получения подсписка списка.
Сама запись довольно проста:

 exampleList[startIndex:[endIndex[:indexStep]]] 

Это означает, что мы можем получить exampleList с индексами, начиная с
startIndex , вплоть до endIndex с шагом indexStep .

endIndex и indexStepнеобязательные аргументы. Если мы оставим
поле endIndex пустым, его значение по умолчанию будет концом исходного
списка. Значение по умолчанию для indexStep1 .

Если у нас есть список l=['a', 'b', 'c', 'd', 'e'] и нарезать его,
используя l[1:3] результирующий подсписок будет ['b', 'c', 'd'] .
Это означает, что мы выбираем элементы lits l с индексами
1, 2, and 3 .

l[0:4:2] вернет подсписок, содержащий только элементы с четными
индексами – 0, 2, 4 .

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

Это означает, что l[-1:] можно интерпретировать как: получить все
элементы в списке l , от последнего элемента до конца списка l
.
Результирующий подсписок будет содержать только последний элемент
исходного списка:

 lastElement = exampleList[-1:][0] 
 # exampleList[-1:] alone will return the sublist - [6] 
 # exampleList[-1:][0] will return the last element - 6 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 

Метод нарезки используется только для доступа к элементам списка и для
создания нового списка с их помощью – без внесения каких-либо изменений
в исходный список.

Использование обратного итератора

Python имеет две встроенные функции, которые мы будем использовать в
этом методе – reversed() и next() .

reversed() принимает список в качестве аргумента и возвращает обратный
итератор для этого списка, что означает, что итерация отменяется,
начиная с последнего элемента до первого элемента. next() принимает
итератор и возвращает следующий элемент из итератора:

 reversedIterator = reversed(exampleList) 
 
 lastElement = next(reversedIterator) 
 print("Last element: ", lastElement) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 

Обратный метод итератора используется только для доступа к элементам
списка в обратном порядке – без внесения каких-либо изменений в исходный
список.

Использование метода reverse ()

Метод reverse() используется для переворота элементов списка . Он
не принимает никаких аргументов и не возвращает никакого значения,
вместо этого он меняет исходный список на место . Это означает, что мы
можем перевернуть список и получить доступ к новому первому элементу:

 # Update the original list by reversing its' elements 
 exampleList.reverse() 
 
 # Access the first element of the updated list 
 lastElement = exampleList[0] 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 

Какие выходы:

 Last element: 6 
 exampleList: [6, ['Four', 5], 'Three', 2, 1] 

Метод reverse() по определению изменяет исходный список, меняя порядок
его элементов. Имейте в виду, что такой подход может оказаться
действительно неэффективным излишеством, так как для переворота списка
требуется время.

Использование itemgetter ()

Модуль operator предоставляет множество эффективных методов,
выполняющих все основные операции в Python, такие как математические и
логические операции, а также другие операции сравнения объектов и
последовательности.

Метод itemgetter() – один из многих методов в модуле operator Он
принимает одно или несколько целых чисел в качестве аргумента и
возвращает вызываемый объект, который можно рассматривать как тип
специальной функции.

Когда мы вызываем operator.itemgetter(0) , результирующий объект будет
функцией, которая получит первый элемент в коллекции. Мы также можем
присвоить этому объекту имя:

 getFirstElement = operator.itemgetter(0) 

Теперь мы можем передать список в getFirstElement(l) , который
возвращает первый элемент из списка l .

Оператор itemgetter() поддерживает отрицательную индексацию,
поэтому получение последнего элемента сводится к следующему:

 import operator 
 
 getLastElement = operator.itemgetter(-1) 
 lastElement = getLastElement(exampleList) 
 print("Last element: ", lastElement) 
 
 print("exampleList: ", exampleList) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 

Этот подход не изменяет исходный список – он генерирует вызываемый
объект, который обращается к нему с помощью индексов.

Использование петель

Теперь гораздо более ручной и элементарный подход будет использовать
циклы. Мы можем перебирать список, используя длину списка в качестве
последнего шага. Затем, на len(l)-1 мы можем просто вернуть этот
элемент:

 for i in range(0, len(exampleList)): 
 if i == (len(exampleList)-1) : lastElement = exampleList[i] 
 
 print("Last element: ", lastElement) 
 print("exampleList: ", exampleList) 

Какие выходы:

 Last element: 6 
 exampleList: [1, 2, 'Three', ['Four', 5], 6] 

Это также не меняет список вообще, а просто получает доступ к элементу.

Заключение

Есть много способов получить последний элемент в списке в Python.
Основное беспокойство при выборе правильного для вас способа – погода
или нет, вы хотите, чтобы последний элемент был удален.

Если вам нужно получить последний элемент без внесения каких-либо
изменений в исходный список, то метод отрицательной индексации
является явным победителем. Это самый простой и самый питонический
способ решить эту проблему.

С другой стороны, если вам нужно удалить последний элемент, а также
получить к нему доступ, вам, вероятно, следует использовать метод
pop()
, который является встроенным методом для выполнения именно
этого поведения.

Для каждой строки найти последний четный элемент и записать данные в новый массив.

В паскале.

Вы открыли страницу вопроса Для каждой строки найти последний четный элемент и записать данные в новый массив?. Он относится к категории
Информатика. Уровень сложности вопроса – для учащихся 10 – 11 классов.
Удобный и простой интерфейс сайта поможет найти максимально исчерпывающие
ответы по интересующей теме. Чтобы получить наиболее развернутый ответ,
можно просмотреть другие, похожие вопросы в категории Информатика,
воспользовавшись поисковой системой, или ознакомиться с ответами других
пользователей. Для расширения границ поиска создайте новый вопрос, используя
ключевые слова. Введите его в строку, нажав кнопку вверху.

Добавить комментарий