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

I work about C++ project on Visual studio. I have more code normally but I prepared simple basic example of my code for you:

void printArray(string theArray[], int sizeOfArray);

int main()
{
   string data[] = { "Hi","my","name","is","John"};

   int num_elements = sizeof(data) / sizeof(data[0]);

   printArray(data, num_elements);

   system("PAUSE");
   return 0;
}

void printArray(string theArray[], int sizeOfArray) {
   for (int x = 0; x < sizeOfArray; x++) {
      cout << theArray[x] << endl;
    }
}

So, Is there any way to find last item on the array?
My expected output looks only John

asked Dec 11, 2018 at 8:29

Asell's user avatar

9

Instead of this:

for (int x = 0; x < sizeOfArray; x++) {
    cout << theArray[x] << endl;
}

You could simply put this:

cout << theArray[sizeOfArray - 1] << endl;

There’s no need for the loop if you just want to print one element.

answered Dec 11, 2018 at 8:31

Blaze's user avatar

BlazeBlaze

16.7k1 gold badge25 silver badges44 bronze badges

1

You can use a std::vector instead of an array and std::vector::back to access the last element.

#include <vector>
#include <iostream>
#include <string>

void printArray(std::vector<std::string> theArray);

int main()
{
   std::vector<std::string> data = { "Hi","my","name","is","John"};

   printArray(data);

   system("PAUSE");
   return 0;
}

void printArray(std::vector<std::string> theArray) {
   for (const auto &element : theArray) {
      cout << element << endl;
   }
   cout << "Last: " << theArray.back() << endl;
}

vector is part of standard c++. You should use containers if you learn c++. An alternative to std::vector is std::array. Both store the size so you don’t need to pass it as an argument to a function.

answered Dec 11, 2018 at 8:34

Thomas Sablik's user avatar

Thomas SablikThomas Sablik

16k7 gold badges34 silver badges59 bronze badges

8

You don’t need loop through all elements,

string lastElement=theArray[sizeofarray-1]

answered Dec 11, 2018 at 8:33

Mesar ali's user avatar

Mesar aliMesar ali

1,7922 gold badges15 silver badges18 bronze badges

1

Урок 23. Поиск элемента в массиве

Просмотров 3.1к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»

На этом уроке рассмотрим алгоритмы поиска элемента в одномерном массиве. Эти алгоритмы очень похожи на обработку последовательностей (поиск, выборка и т.д.).

Отличие заключается в том, что в массиве одновременно доступны все его компоненты. Такой доступ называется параллельным.

Рассмотрим несколько примеров.

Пример 1. Найти номера четных элементов.

Решение.

Для нахождения четных элементов необходимо просмотреть весь массив, и если будут попадаться четные элементы, то нужно выводить их на экран. Напишем процедуру, которая принимает в качестве входного параметра массив и выводит на экран нужные элементы.

Procedure Solve(m : myarray);
Var i: Integer;
Begin
   For i:=1 To n Do 
      If m[i] Mod 2 = 0 Then Write(i:5);{если элемент четный, то вывести на экран}
End;

Пример 2. Есть ли отрицательный элемент в массиве?

Решение.

Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип.

Начинаем с первого элемента (i = 1).

Пока не просмотрен последний (i<=n) и не найден отрицательный (m [i]>=0), будем переходить к следующему (inc (i)).

Таким образом, мы закончим просмотр в одном из двух случаев:

  • первый — просмотрели все элементы и не нашли отрицательный, тогда i>n;
  • второй — нашли нужный, при этом i<=n.

Напишем функцию, значение которой истина (True), если такой элемент есть, и ложь (False), если его нет.

Function Controll (m: myarray): Boolean;
Var i : Integer;
Begin
   i := 1;
   While (i<=n) And (m[i]>0) Do Inc(i);
   Control1:=(i<=n)
End;

Пример 3. Найти номер последнего отрицательного элемента массива.

Решение.

Последний отрицательный — это первый отрицательный элемент, если начать просмотр с конца.

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

Таким образом, можно модифицировать предыдущую функцию. Но поскольку надо найти номер элемента, тип результата будем целым.

Договоримся, что если такого элемента нет, то значение функции будет равно 0.

Function Control2 (m: myarray): Integer;
Var i : Integer;
Begin
   i:=n;
   While (i>=1) And (m[i]>0) Do Des(i);
   If i<1 Then Control2:=0
          Else Control2:=i;
End;

Вы рассмотрели алгоритмы на поиск и выборку элементов в массиве.

На следующем уроке продолжим знакомиться с алгоритмами  обработки одномерных массивов.

Получаем последний элемент массива в JavaScript

Массив в JavaScript – это объект-контейнер, содержащий фиксированное количество значений одного типа. Длина массива, после его создания, останется постоянной. В данной статье мы рассмотрим различные методы доступа к последнему элементу массива.

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

1 – Используем метод slice() массива для возврата определенного элемента.

2 – Извлекаем последний элемент, используя массив отрицательных индексов array.slice(-1).

3 – Сохраняем искомое значение в переменной.

Далее мы рассмотрим варианты реализации кода.

Использование свойства длины массива.

Свойство length возвращает количество элементов в массиве. Вычитание 1 из длины массива дает индекс последнего элемента массива, с помощью которого можно получить доступ к последнему элементу. Причина, по которой мы вычитаем 1 из длины, заключается в том, что в JavaScript нумерация индексов массива начинается с 0. т. е. индекс 1-го элемента будет равен 0. Поэтому индекс последнего элемента будет равен длине массива-1.


let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array[array.length - 1];

console.log(lastElem);

//Вывод: 16

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

Метод slice() возвращает определенные элементы из массива в виде нового объекта массива. Этот метод выбирает элементы, начинающиеся с заданного начального индекса и заканчивающиеся заданным конечным индексом, исключая элемент в конечном индексе. Метод slice() не изменяет существующий массив. Предоставление одного значения индекса возвращает элемент в этой позиции, а отрицательное значение индекса вычисляет индекс с конца массива.


let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.slice(-1);

console.log(lastElem);

//Вывод: 16

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

Метод pop() извлекает/удаляет последний элемент массива и возвращает его. Этот метод изменяет длину массива.


let array = [2, 4, 6, 8, 10, 12, 14, 16];
let lastElem = array.pop();

console.log(lastElem);

//Вывод: 16

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


let array = [2, 4, 6, 8, 10, 12, 14, 16];

console.time('array length property');
let lastElem = array[array.length - 1];
console.log(lastElem);
console.timeEnd('array length property');

console.time('array slice method');
let lastElem1 = array.slice(-1);
console.log(lastElem1);
console.timeEnd('array slice method');

console.time('array pop method');
let lastElem2 = array.pop();
console.log(lastElem2);
console.timeEnd('array pop method');

//Вывод:

//16
//array length property: 7 ms
//[ 16 ]
//array slice method: 5 ms
//16
//array pop method: 2 ms

И как вы можете видеть, метод pop() является самым быстрым. Вы можете использовать его, если вас устраивает изменение массива. Если вы не хотите изменять массив, то используйте метод slice().

  • Создано 14.09.2021 09:42:02


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

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

Наверное, как и все остальные
array[array.length - 1]

Чтобы без лишних операций в виде поиска длины массива

Если тут и есть лишняя операция, то это как раз -1, длина массива – это свойство, ничем от вашего array.last оно не отличалось бы, если бы второе существовало, конечно.

var array = [1,2,3,4,5];
Array.prototype.last = function() {
 return this[this.length - 1];
}
array.last() // 5

Если этот массив больше не нужен, то можно делать .pop()

[1,2,3].pop() // -> 3

Еще можно делать slice(-1), но мне кажется, что это хуже читается.

Чтобы без лишних операций в виде поиска длины массива

И вообще, нет никакой операции поиска, длина массива – это свойство самого массива, и обращение к элементу через индекс (вот как у вас сейчас) гораздо быстрее, чем модифицировать массив )

Есть еще такой способ, но для больших массивов не самый лучший
[1,2,3].reverse()[0]

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

Ну если убрать N- будет норм.

да и при N будет нормально, ошибки не будет, просто на экран выведется мусор, переменная то не инициализирована

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

Не понимаю зачем вы делаете проверку i>-1 если можно проверять i>=0;

этот код выполнит одно и тоже но при записи i>=0 возможен вариант что будут две проверки на больше и на равно
неизвестно как компилятор откомпилирует, оптимизирует или нет, на каком камне это будет исполнятся
а так я просто показал еще один путь решения
не люблю мыслить шаблонно

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

А если выводить вне цикла – лучше иметь счетчик отдельно и отдельно переменную вывода, счетчик может понадобится еще для каких то подзадач.

так если он не нужен снаружи объявляй его в цикле
да и счетчик это не приговор
можешь в одном цикле объявить i а в другом ii
почитай Криса Касперски “Техника отладки программ без исходных кодов” “Основы хакерства” и другие книги
и поймешь что получается в исполняемом коде, хороший оптимизатор может так перелопатить твою программу, что её никто не узнает

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

Помогите найти ошибку.

одну

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

Microsoft visual C++ 6.0

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

double a[5],

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

cout<<“Vvedite razmer massiva”;

зачем? он итак известен 5
а что будет, если я введу100

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

cout<<“nVvedite massiv:n”;
cin>>a[n];

выход за пределы массива

и где ввод всех элементов массива?

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

for(i=0;i<n;i++)
{
cout<<“nMassiva:n”<<a[i];
p*=a[i];
k++;
}

и где проверка на отрицательный элемент?
k будет равно n

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