Одномерный массив в C++ для начинающих

  • Массив представляет нечто целое, что содержит целый набор однотипных элементов.
Мобильный телефон представляет из себя своеобразный массив, который содержит в себе набор контактов.
Спичечная коробка представляет из себя своеобразный массив, который содержит в себе набор спичек.
Квартирный дом представляет из себя своеобразный массив, который содержит в себе набор хозяев квартир.
Парк машин представляет из себя своеобразный массив, который содержит в себе коллекцию машин.
В общем, массив напоминает обычную коробку с хранимыми внутри вещами материального мира, например, продуктами.
Сам массив удобен для хранения, но ценны хранимые внутри него элементы, а не непосредственно массив. Конечно в мире материальном коробка может оказаться золотой, потому и дороже своих внутренностей, но в мире программирования массивы являются обычными контейнерами хранения.
Обрабатывая массивы, программист работает не с массивом, как с таковым, а с его внутренними данными. В отличие от материального мира, где хранимые объекты могут не обладать свойством самоидентификации, массивы мира программистов всегда сами нумеруют элементы своих колллекций (обычные массивы) или дают элементу коллекции признаки идентификации (ассоциативные массивы).
  • В массиве главную роль играют его элементы, а сам массив играет второстепенные роли.
  • Каждый элемент коллекции массива всегда имеет какой-то признак своей идентификации. Признаком идентификации элемента обычного массива всегда является число, которое есть номер ячейки массива. Называется число, номер ячейки, индексом массива. По этому номеру всегда можно идентифицировать и обработать некоторый элемент из массива.
Надеюсь, смысл понятен. Массив — это хранилище, контейнер. Обрабатываются его элементы, а не сам массив. Каждый элемент массива идентифицируется или номером, или каким-то задаваемым программистом ключом. В обычных массивах, а сейчас вы изучаете обычные массивы, идентификация происходит по номеру. Компилятор сам нумерует элементы массива, нумерация в С++ начинается с нуля.
Язык С++ является надмножеством языка С. В первых версиях языка С++ программистам приходилось работать с массивами так же, как программистам С. Самые обычные массивы относятся к фундаментальным типам данных и являются составными типами. Есть два способа работы с такими, обычными, массивами. Первый способ — выделение памяти под заранее известное число элементов, второй способ — выделение памяти в ходе работы программы под задаваемое количество элементов. Второй способ требует ручного управления памятью, что новичкам в большинстве случаев неудобно.
Бывает так, что известно количество элементов, которое будет хранится в массиве, известно, что это количество элементов не изменится за всю жизнь работы программы. В таких случаях используют обычные массивы. Для примера подобной необходимости несколько жизненных вариантов:
Воллейбольная площадка: больше шести игроков на ней не играет.
Квартира жилого дома: во всём доме может не быть квартир, с количеством комнат, превышающим 5.
Виды осадков: выпадающие на планете Земля виды осадков ограничены некоторым числом (дождь, снег, град)
Штат сотрудников: штат сотрудников может быть строго фиксирован
Именно для таких случаев и используется самый обычный массив. Количество элементов таким массивам задаётся непосредственно в исходном коде программы. Изменить количество элементов в ходе работы программы таким массивам невозможно. Такие массивы назывются статически-создаваемыми массивами, иногда называют статическими, но слово статические плохо подходит из-за существования ключевого слова static.

Статический массив на самом деле немного другой:

Имеется различие в работе первого и второго. Описание различий выходит за рамки статьи. Но имейте в виду, что есть такой дефект в терминологии. Вроде и принято называть обычный массив статическим, но оно неправильно как-то выходит в конечном итоге.
  • Не путайте статические массивы со статически-создаваемыми. Говорите правильно.
От нас требуется массиву сообщить, какие типы он должен хранить в себе и количество элементов. Зная эти составляющие, компилятор выделит необходимую память для всего массива.

В квадратных скобках указывается число хранимых элементов.
В подавляющем большинстве случаев интересен не сам массив, а то, что он содержит. Почти всегда обработка массивов предполагает обработку его элементов, причём часто предпалагается обработка всех элементов из массива. Для обхода элементов массивов используют циклы. Одна и та же обработка на каждый отдельный элемент массива сама собой напрашивает использование циклов: повторение одних и тех же действий.
В языке С++ численный отсчёт начинается с нуля. В некоторых других языках программирования с единицы. Немного нестандартное для обычного человека начало отсчёта сбивает с толку многих начинающих программистов: трудно первое время ориентироваться, постоянно нарушаются некоторые границы.

Эта ошибка не контроллируется компилятором. Программист, пишуший код, а не компилятор должен контроллировать возникновение такой ситуации и не допускать её. Из-за того, что отсчёт в С++ начинается с нуля, последним индексом массива, хранящего 10 элементов, будет индекс 9:

  • Для любого массива C++, хранящего N элементов, индекс последнего элемента всегда N-1, а индекс первого элемента 0
Можно подстроить отсчёт под себя, выделив массиву на 1 элемент больше, но делать такое не нужно. Пишущий на C++ должен писать, придерживаясь правил C++. Следование принципу использвания правил языка, на котором пишешь, поможет вам в будущем.
Каждый элемент массива представляет из себя переменную с указанным массиву типом. В отличие от обычной переменной, которой название даёт программист, элементы обычного массива подобны автонумерующимся переменным. Т. е. название массива вместе с индексом элемента = переменная. Работать с элементами массива можно абсолютно так же, как работаем с переменными. Единственное отличие — индексация.

Подведём промежуточные итоги:
  • Для создания обычного массива компилятору нужно указать тип хранимых элементов и предполагаемое количество ячеек для хранения тех элементов.
  • Массивам обязательно нужно указывать тип, как и обычным переменным. Типы массивов задаются те же, что для переменных.
  • Количество хранимых элементов указывается в квадратных скобках во время объявления массива.
  • Квадратные скобки могут служит некоторого рода индикатором, сообщающем о том, что работа происходит с массивом.
  • Каждый отдельный элемент обычного массива вытаскивается по индексу, т. е. по номеру ячейки.
  • Номер вытаскиваемого элемента надо начинать расчитывать с ноля, а не единицы.
  • Номера элементов массива называют индексами массива.
  • Массив возможно инициализировать значениями. Без инициализации массива значениями внутр массива оказывается информационный мусор.
На этом промежуточные итоги подведены. Сейчас я напишу то, что где-то вычитал, но сам не понял, что хотел сказать авторы:
  • Внешние и статические массивы можно инициализировать
  • Автоматические и регистровые массивы инициализировать нельзя
Идём дальше.
Инициализируются массивы с помощью фигурных скобок.

Если нужно инициализировать массив нулями, то это можно делать следующим образом:


В общем, не нужно каждый ноль прописывать вручную для инициализации нулями. Но не запутайтесь, нельзя инициализировать массив, например, одними единицами показанным в #8.1 способом. #8.1 подходит только для нолей.
Правилами языка С++ разрешено использовать пустые скобки при инициализации массивов. В случае использования пустых квадратных скобок компилятор сам определит, сколько памяти массиву нужно выделить.

Узнать, сколько байт уходит на один элемент массива, можно так:
Узнать, сколько элементов может поместиться в массив, можно так:
Переходим к написанию простеньких примеров.

  • Количество элементов обычного массива задаётся только константным значением.
Количество элементов обычному массиву можно задать только неизменяемым значением. Задать такое значение возможно только в исходном коде программы. Хотя некоторые компиляторы могут компилировать коды, в которых количество указывается переменной, допускающей изменения, такие действия не приветствуются.

Если массив требует себе расширения или наоборот, сужения, то обычный статически-создаваемый массив не подходит. Изменять число элементов в нём невозможно. Хранит он только фиксированное число элементов. Хоть размер такому, как в листинге #11, и можно задать во время работы программы, задать его можно единожды и изменениям он не подлежит.
Массив из листинга #11 может обманывать. Возможно подумать, что он умеет изменять пространство для хранимых в себе элементов, но на самом дее это совсем не так. Изменять пространство под хранимые элементы можно только с помощью указателей на массивы, а умеют это делать самостоятельно массивы из библиотек: STL, BOOST и т. п.
В С++ нельзя применять операции к самому массиву как к его элементам. Он как коробка, а компилятор такой: "Зачем мне коробка?". Коробка отличается от хранимых внутри неё элементов.
Иногда массивы называют матрицами. Пока что вы поверхностно ознакомлены с самым простым типом массива. Можете встретить задачу сложения одномерных матриц/массивов. Чтобы решить такого вида задачу, нужно иметь представление о том, как складывать между собой две цепочки чисел. На самом деле ничего сложного нет: каждый элемент такой цепочки складывается с элементом другой цепочки, а связь складываемых элементов определяется номером элемента в цепочке.
1 2 3 4 5
+
7 5 3 2 0
=========
8 7 6 6 5
Таким образом, можно говорить о том, что {1 2 3 4 5} + {7 5 3 2 0} = {8 7 6 6 5}
В задачах на операции с массивами: сложение, вычитание, умножение и деление — вас именно об этом и просят. Точно помню, было время, когда мне сложно было понять, чего от меня требуется.

Немного объясню листинг #13. Сначала создаётся два одномерных массива, эти массивы именуются именами: A и B. Эти объявленные массивы инициализируются значениями, указываемыми в фигурных скобках. Получается два массива с конкретными значениями. Эти значения складываются между собой. Каждое слагаемое определяется номером, индексом массива. Первый элемент одного массива складывается с первым элементом другого, второй со вторым и т. д. Чтобы не складывать каждый элемент вручную, использован циклический обход по всем элементам массивов. Для того, чтобы сохранять результаты, был добавлен ещё один массив, названный sumAB. Элементы A[1] и B[1] сложились и сохранились в sumAB[1], A[2] и B[2] сложились и сохранились в sumAB[2]. Вот и вся премудрость. Сохранённое значение сразу выводится на экран.
  • Задача: Получить сумму всех элементов массива.

Чтобы правильно считать сумму, обязательно нужно переменную, сохраняющую промежуточные результаты, в самом начале инициализировать нулём. Без инициализации нулём результирующей переменной правильный результат может сложиться неизвестно с чем. Будьте внимательны.
Нужно различать задачи и понимать, что вам действительно нужно. Вот приведено две задачи, обе на сумму элементов, но одна требует сложить все элементы массивов поиндексно (листинг #13), а другая просто сложить все элементы массива между собой (листинг #14). Вроде бы условия так похожи, а результаты вон насколь разные.
Бывает необходимость задания значений в массив с клавиатуры. Пока что во всех примерах значения в массив записывались сразу из исходного кода. Запись значений с клавиатуры требует обхода всего массива с указанием на ячейки для записи. Любой обход — всегда цикл. Всё остальное ничем не отличается от работы с обычными переменными.

Писал уже об этом, но напомню лишний раз:
  • Начинающим программистам и пришлым программистам (например, с Turbo Pascal) сложно контроллировать границы массивов. Одна из очень распространённых ошибок всех новичков — выход за пределы массива. Отсчёт в С++ ведётся с нуля!
В языке С++ массивы могут быть многомерными: двумерные, трехмерные, четырёхмерные и т. д. Мерность массивов определяется количеством квадратных скобок:

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

Иногда говорят, что имя массива это указатель на первый элемент массива. Чисто технически такое утверждение неправильное. Имейте это в виду.

  • Имя массива это только идентификатор. По стандарту массивы имеют право приводиться к типу "указатель", при этом получаемый указатель указывает на первый элемент массива.

Такие дела. Типы данных "указатель" и "массив" отличны друг от друга. Хотя часто имя массива используется как указатель на первый хранимый элемент, в некоторых случаях поведения у имени массива и переменной, тип которой указатель, будут отличаться.

  • Несмотря на то, что имя массива можно использовать как указатель, обработка указателей и обработка массивов может происходить по-разному. Компиляторы C++ различают массивы и указатели. Сходство очень большое, но некоторые отличия вы увидите прямо сейчас:
  • Операция sizeof, применённая к массиву, вернет сколько байт выделено массиву
  • Операция sizeof, применённая к указателю, вернет размер указателя
  • Адрес указателя поменять можно
  • Адрес массива поменять нельзя
  • Значением указателя, инициализированного с помощью выражения размещения, является адрес начала этой области. Сам указатель, как объект, обладает своим собственным адресом.
К сожалению, это не всё, что имеет смысл рассказать о массивах. Но тема уже получилась достаточно объёмной, надеюсь, что очень полезной. Цель этой статьи — дать вам понять природу массивов, научить их понимать и научить использовать массивы в ваших кодах. Статья ограничена описанием самого обыкновенного массива. Описание указателя на массивы выходит за рамки этой темы.
  • В С++11 был добавлен шаблонный класс array
Если вы сможете понять синтаксис этого шаблонного класса, то вместо обычных массивов лучше используйте array

Использование массивов, по листингу #18, вообще ничем не отличается от использования обычных массивов. Отличается только способ объявления.

Хотя многомерные массивы array выглядит достаточно ужасно, но если вдруг кому надо:

Любой многомерный массив — это массив, хранящий массивы. Это в любых массивах так. В случае объявления array это просто более очевидно.
Схема объявления шаблонного класса array на первое время может быть, например, такой:
Объявить тип array и прилепить к нему угловые скобки:



Дать имя массиву:



Указать тип и количество элементов внутри угловых скобок:


Чтобы создать двумерный массив, нужно массив заворачивать в массив. Чтобы трёхмерный: массив заворачивается в массив, всё это дело заворачивается в свой массив.

=====================

  • Небольшой набор задач, способных вызывать затруднения

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

47 комментариев: Одномерный массив в C++ для начинающих

  • Anonymous говорит:

    жопце




    0



    0
  • Anonymous говорит:

    Объявляется массив приблизительно так int A[100]; //Массив A под 101 элементов типа int char S[256]; //Массив S под 257 элементов типа charВраки. Будет 100 элементов, а не 101 (соответственно, 256 а не 257). Отсчет номеров начинается с нуля. То есть в массиве А нет номеров ни 101, ни 100 — только 99 максимум, нуль — минимум.

    Автор сайта отвечает:
    Да. Спасибо. Исправил




    0



    0
  • ксения говорит:

    дан многомерный массив 5 на 5. Все элементы массива умножить на -1. Вывести получившийся массив.

    Автор сайта отвечает:




    0



    0
  • soijvios говорит:

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




    0



    0
  • Андрей говорит:

    Ооо у меня тоже такое задание на курсаке по ООП??? Админ не скинешь случайно???))))

    Автор сайта отвечает:
    если задание как у soijvios, то нет.
    хотя задание и простое, желания делать чужие задания нет.




    0



    0
  • Аноним говорит:

    спасибо все доходчиво объяснил




    0



    0
  • Влад говорит:

    Спасибо, все понятно!




    0



    0
  • Suspect говорит:

    как мне сдвинуть массив вправо или лево цыклично на число введенное с клвтры?? у меня выводит только с введеного индекса и выбивает ошибку ,а первые елементы не выносит на конец((

    Автор сайта отвечает:
    Пример поэлементного сдвига влево

    Сдвиг вправо немного хитрее чем сдвиг влево.

    большое прибольшое спасибо!!!
    особенно за M[len-1]=temp; в первом примере!!! не доходило как это!! теперь осьалось записать и выучить!!
    посоветуйте что делать чтоб орентироваться!! только начал учиться , а уже тупики возникают((( не приятно себя чуствовать тугодумом((
    еще раз спасибо!!

    Автор сайта отвечает:
    Мой первый пример легко понять изучив алгоритм пузырьковой сортировки одномерного массива.
    Что я могу посоветовать?
    1. Не следовать советам тех людей, о которых вы ничего не знаете, (включая меня). Если человек авторитетен (очень активный человек с какого бы то ни было форума, или же очень известный автор книги), то вот к таким стоит прислушиваться.
    2. Научиться использовать отладчик. Очень сильно поможет в будущем.
    3. Научиться писать на бумаге ход выполнения вашей программы пошагово. Если ход написания программы сходу не очевиден, или же если, что-то в программе срабатывает не так как вы предполагали, то такое написание на бумаге очень поможет. (особенно при неумении работы с отладчиком)
    4. Полюбить сложности и научиться бороться с ними своим умом. Вас научили разговаривать и ходить? — значит вы способны учиться.
    5. Если первые 4 совета не помогают, то только тогда спрашивать совета. Чем лучше вы поставите вопрос — тем больше шансов для ответа. Это сейчас вопрос был простой, чуть дальше сложности вопросов могут резко возрасти и сходу ответит уже не каждый.
    6. Хотите понять массивы? Возьмитесь за них серьезно и изучите различные алгоритмы сортировки и алгоритмы поиска. Не обязательно все, хотя бы штук по 5. (Но чем больше вы изучите таких алгоритмов, тем вам же будет лучше).
    7. Старайтесь делать не абы как, а делать правильно.
    8.

      НЕПРАВИЛЬНОЕ МЫШЛЕНИЕ

    • теперь осьалось записать и выучить!!
      ПРАВИЛЬНОЕ МЫШЛЕНИЕ

    • теперь осталось записать, изучить, понять, разобраться…»

    9. Старайтесь решать задачи. Ищите себе их, придумывайте себе сами, спрашивайте у знакомых (если есть), берите с форумов.
    Не имеет значения язык программирования. Умение мыслить от языка программирование не зависит. А ваши программы напрямую будут зависеть от того как вы умеете мыслить. Развивайте воображение.
    10. И, заглядывая вперед, есть еще очень важный момент. Нужно понимать. что вы можете изучить синтаксис языка в идеале, но так и не стать программистом. Чтобы стать программистом нужно уметь применять конструкции языка для решения разного рода задач. А чтобы суметь их применять нужно хорошо разбираться в разных областях науки (физика, математика, сопромат, электротехника, инж.графика и всё остальное). Есть люди, которые забывают об этом.
    ==========================================
    это не всё, что я могу посоветовать, но не хочется много писать не по теме статьи.




    0



    0
  • Daniar Orozkojoev говорит:

    помогите пожалуйста с этим примером :
    В массиве С (8,12) найти строку где все элементы меньше нуля , эти элементы заменить на ноль . заранее спасибо
    🙁 🙁 😥 с примерами у меня фигово и компа нет сижу с инет клубааааа 😐 и еще примеры :
    Найти ,где находиться минимальный массив B(20,25) ➡ спасибо вам
    ZAranie vsem spasibo 😳 🙂

    Автор сайта отвечает:
    Найти ,где находиться минимальный массив B(20,25) :
    Я помогаю с такими примерами, которые требуют знаний кроме тех, которые можно получить прочитав статью.

    Это сайт, а не форум. И если бы пользовались поиском (Яндекс или Гугл (не сайтовые, а вообще)), то скорее всего нашли бы готовые ответы на столь простые вопросы.




    0



    1
  • Daniar Orozkojoev говорит:

    спасибо вам 🙂




    0



    0
  • Gen говорит:

    Можно Получить сумму всех элементов массива
    Код C++ Сумма элементов массива
    В 6 и 7 строке зачем инклуды?

    Автор сайта отвечает:
    исправил. спасибо.




    0



    0
  • Евгений говорит:

    Задан одномерный массив с произвольным именем из Nэлементов вывести исходный массив и массив , полученный в результате выполнения требований задачи: найти минимальное число и присвоить его значение первому и предпоследнему элементам массива,а вместо минимального числа записать произведение этих элементов массива .




    0



    0
  • Kostya говорит:

    Ввести динамічний масив(Ν) з клавіатури. Знайти мінімальний, позитивний елемент масиву і кількість парних елементів.
    Масив В(Ν) ввести в тілі програми, передати його в підпрограму через покажчик Знайти номер першого парного елементу масиву(Ν). Результат вивести в основній програмі




    0



    0
  • Аноним говорит:

    😥 мне это ни о чем не говорит…

    Автор сайта отвечает:
    Ну а как вам объяснять?
    Массив это набор чего-то однородного. В программировании обращаются либо к массиву как к целому объекту, либо к его элементам. Наиболее часто интерес представляют именно элементы массива. И вы должны сосредоточится на умении работать с элементами массива.

    Продукты в магазине = массив. Вы приходите в магазин, не уносите ж домой сам магазин
    Автомобили в автопарке = массив. Вы приходите в автопарк, не уносите ж домой сам автопарк




    0



    0
  • Аноним говорит:

    Вывести на экран без повторений все элементы массива




    0



    0
  • Максим говорит:

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

    массив в си это пронумерованное множество элементов указанного типа.

    в си (да и в других языках) при указании размера массива, указывают не размер в байтах, а число элементов массива.
    например
    int a[10];
    cout<<sizeof(a);

    выдаст в зависимости от платформы 20 или 40. так как в массив должно поместиться 10 элементов типа int.

    в си не "обычно" а всегда нумерация элементов массива начинается с нуля. (соответственно максимальный допустимый индекс элемента массива на единицу меньше числа элементов массива)
    в плюсах действительно можно переопределять операцию [], но это совсем другая история, и это не массив.

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

    Автор сайта говорит:
    с размером в квадратных скобках каюсь. Неправильно было написано. Я это исправил.
    Но с 2000 да? А Не стыдно не признавать, что если программист желает, то делает нумерацию по своему? и уже она не с нуля, а такая как удобно.
    По поводу размерности вы сами-то знаете что это? Даже в математике к определению размерности существует несколько подходов. Прочитавшему читателю не нужно объяснять о какой размерности тут идет речь.

    Имя массива – это указатель на его первый элемент. Хотя да, идентификатор.




    0



    0
    • Максим говорит:

      да с 2000 года все нормальные люди давно автоматом заменяют как минимум < > иначе достаточно прописать зловредный скрипт и сейт сломан.
      мерность массива в си изветно что такое
      a[5] — одномерный
      b[3][5] — двухмерный.
      и т.д.
      учебник по быдлокодингу у вас конечно отменный получился, ничего не скажешь.
       
      где вы видели нумерацию элементов массива в си/си++ не с нуля?
      а с именем массива посмотрите, дезасемблером, нет в сегменте данных переменной содержащей указателя на первый элемент массива, эта константа существует только в компиляторе привязанная к идентификатору, и когда компилятор по правилам приведения типов ожидает получить указатель то тогда на место идентификатора подставляет константу, но не раньше, это существенное отличие массива от указателя. а то потом начинаются почему массиву нельзя присвоить массив и т.д.

      Автор сайта отвечает:
      ясно.
      вообще я это не сегодня писал. Поэтому ошибки свойственные новичкам на моем ресурсе часто встречаются. Я этого никогда не скрывал.
      и по поводу имя массива = указатель — это не я придумал, а с форумов подхватил.

      я позднее перепишу почти всю статью про массив. (эту статью) вам спасибо, что указали на существенный недостаток.
      буду благодарен и за указание на другие ошибки.
      ======================
      по умолчанию с нуля.
      нигде не видел. спор про нумерацию ни о чем. В контексте, который я пытался передать, имелось ввиду, что пользователь может выбирать удобные для себя начало и конец отсчета, а вы о том, как работает компилятор. Мы о разных вещах, поэтому спор ни о чем. Я хорошо понял о чем вы сказали.
      ======================
      я не умею пользоваться дизассемблером, к сожалению. Но мне доказывать не нужно. Я это итак понимаю так как вы мне сказали.
      Статья полностью переписана




      0



      0
  • Нургали говорит:

    Дан массив A ненулевых целых чисел размера 10. Вывести значение первого из тех его элементов AK, которые удовлетворяют неравенству AK < A10. Если таких элементов нет, то вывести 0.
    Помоги те плс на с++




    0



    0
  • Артём говорит:

    . Массив размером m, где m – натуральное число, заполнен случайным образом. Найдите в массиве моду. Модой называется элемент ряда, который встречается наиболее часто.

    Автор сайта отвечает:
    http://ci-plus-plus-snachala.ru/?p=1106




    0



    0
  • Vitaliy говорит:

    Вводится последовательность из N чисел. Определить, содержит последовательность хотя бы два равных соседних числа (аi = аi +1).
    Помогите 🙁




    0



    0
  • максим говорит:

    помогите решить. даны два одномерных массива C(6) и D(6), элементы которого являются хаотично расположенные целые числа. Необходимо элементы массива C(6) переписать в массив D96), а все отрицательные элементы в исходном массиве C(6) заменить нулями. На дисплей вывести: исходные массивы C(6) и D(6) и вновь сформированные массивы C(6) и D(6) после выполнения указанных операций.




    0



    0
  • Влад говорит:

    Найти пять наибольших элементов одномерного массива целых чисел.
    Помогите(

    Автор сайта отвечает:
    Отсортировать массив по убыванию и вывести 5 его первых элементов




    0



    0
  • ivan говорит:

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




    0



    0
  • Михаил говорит:

    Помогите пожалуйста. Я всё ни как не пойму как сделать. У меня одномерный массив, заполняется рандомно числами от 0 до 50. Как написать, чтобы он искал первое четное число, последнее нечетное число и при этом считывал сумму чисел между этими двумя элементами. Я уже голову сломал и ни как не найду. Помогите пожалуйста. 🙁 🙁

    Автор сайта отвечает:




    0



    0
  • Аноним говорит:

    Как найти 3х мерное массив сумму




    0



    0
  • oleghummer777 говорит:

    Помогите, если не трудно

    Дан массив {Wi},  i — целое, не больше 50; и число Z. Определить, количество элементов массива равных Z

    Дан массив {Нi}, i — целое, не больше 85; и числа А и В. Заменить в данном массиве все элементы равные А на число В




    0



    0
  • Alena23357 говорит:

    Помогите пожалуйста , я уже две недели мучаюсь 🙁
    Дан упорядоченный массив  из N целых чисел. С клавиатуры вводятся три новых числа. Вставить их в исходный массив не нарушая упорядоченность.

    Получить из него массив отрицательных и массив положительных чисел.

    Автор сайта отвечает:
    А у вас есть доказательство двухнедельного упрямства? Нерабочий код. Если есть, показывайте.
    В С++ без STL нету динамически расширяемых массивов, поэтому вставка в массив элементов ведет к написанию подобия своего вектора, либо использование realloc из языка Си




    0



    0
  • c4etak говорит:

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

    Автор сайта отвечает:
    Добавлено в конце статьи. Перед комментариями, под спойлер




    0



    0
  • Сергей говорит:

    Добрый день! Вы могли бы подробнее ракрыть строчку:
    if (!(find_el_arr(arr,N,arr[i]))) {  //Если не нашли дубля
    Спасибо.

    Автор сайта отвечает:
    if (find_el_arr(arr,N,arr[i])) == 0) ;
    Это вызов функции с параметрами, сразу сравниваем возвращаемый результат на нуль. Если нуль, то условие выполнено, иначе нет.




    0



    0
  • Алена говорит:

    Дано натуральне число n ( n <=100 ), ціле число m і масив з n цілих чисел. Чи міститься число m у масиві? Відповіддю повинне бути число 1 при позитивній відповіді і число 0 – при негативній. помогите пожалуйста

    Автор сайта отвечает:
    Попытки были?




    0



    0
  • Максим говорит:

    Помогите пожалуйста не могу разобраться

    Відсортувати дані в файлі, не зчитуючи цілий файл одночасно в пам’ять




    0



    0
  • Альфред говорит:

    Помогите пожалуйста, а то запутался совсем…

    Дан  одномерный  массив  А(N).  Составить на языке С/С++
    Определить второй по величине максимальный элемент  этого массива, не равный первому.




    0



    0
  • Андрій говорит:

    Помогите пожалуйста

    Задано масив С 12 . Створити новий масив, елементи якого дорівнюють відношенню відповідного елемента вихідного масиву до середнього квадратичного його перших 5-ти відємних елементів. Вивусти новий масив, перші пять відємних елементів та їхнє середнє квадратичне




    0



    0
  • Хахыров Петр говорит:

    как сделать алгоритм с рандомными входными данными ,

    как то так?

    Автор сайта отвечает:
    Можно и так. Только Ваш код тогда должен иметь приблизительно такой вид.(Не в старых компиляторах)

    Тогда будет большой массив, часть которого расходует память впустую.
    Лучше использовать вектор, а если требуется именно массив в стиле Си, то или array из С++11 (фиксированные размеры, как и у Вас) или указатель с выделением памяти под массив.




    0



    0
  • Роман говорит:

    Помогите пожалуйста(как-нибудь попроще)
    Дан числовой массив с повторениями (может содержать одинаковые элементы). Сформировать из него массив без повторений.

    Автор сайта отвечает:
    Ваши попытки сюда кидайте и я помогу.




    0



    0
  • Роман говорит:

    Автор сайта отвечает:
    Или это то, что Вы написали или код обрезало (нужно код в теги включитать, перед комментариями написано как).
    Мучать Вас не стану. Вниз статьи я вынес одно из решений.
    Здесь. Чуть прокрутить наверх
    Там под спойлером. (Перед началом комментариев).




    0



    0
  • Евгений говорит:

    В коде "Вывод двумерного массива на экран" в строке 13 ошибка. Нужно заменить i на j.

    Автор сайта отвечает:
    Спасибо. Исправил.




    0



    0
  • ерлан говорит:

    массив с размером n и k( 0<k<5.k<n) дано .надо сдвигать всех элементов массива вправо на позицию k




    0



    0
  • Лина говорит:

    В матрице перемножить элементы первого и второго столбца?
    Я не могу разобраться ни с перемножением столбцов ни строчек, при поиске все ответы раза так в 4 сложнее изученого

    Автор сайта отвечает:
    На листе бумаги понимаете как перемножать?




    0



    0
  • Аноним говорит:

    Помогите написать программу пожалуйста

    Используя синтаксис структуры составить программу для заполнения данными базы данных Каталог Видеозаписей со следующими полями КодЗаписи, ЖанрФильма, Режисер, ГлавныйГерой, ТипНосителя, ДатаЗаписи. Программа должна содержать ввод с клавиатуры указанных данных и вывод данных ввиде столбца. Программа содержать не менее 10-и записей.




    0



    0
  • Муратбек говорит:

    Здравствуйте!

    Как можно найти. Сформировать на его месте новый массив, в котором первым элементом будет последний элемент старого, вторым предпоследний и т.д

    Автор сайта отвечает:
    Уточните вопрос. Найти что? Сформировать на месте чего?

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




    0



    0
  • ulan говорит:

    привет!!!




    0



    0
  • Timur говорит:

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




    0



    0
  • Аноним говорит:

    Как найти разность 2-х максимальных чисел массива [20] заполненного рандомными числами в интервале [-5 :20]?

     




    0



    0
  • Роман говорит:

    Дан массив чисел. выведите все элементы массива в порядке неубывания




    0



    0
  • Bodyan говорит:

    Дано цілочисельний масив X розміром N. Сформувати масив Y ,з тих елементів масиву C, які знаходяться на непарних місцях




    0



    0
  • Юлия говорит:

    Если у вас большой массив, но надо установить все элементы в нулевое значение, то не обязательно приписывать в фигурных скобках нули столько раз, сколько элементов в массиве, можно использовать простую конструкцию int A[1000] = { 0, }

    Здесь может получиться путаница: эта строка ноль в скобках не означает «массив из нулей», он означает «первый элемент задать равным нулю, остальные — значениями по умолчанию», которые для int как раз ноль.

    То есть int A[1000] = { 4, }  — это массив из четвёрки и 999 нулей за ней.




    0



    0

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

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Работа программиста и шамана имеет много общего - оба бормочут непонятные слова, совершают непонятные действия, и не могут объяснить, как оно работает

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок