Что такое элемент в c
Перейти к содержимому

Что такое элемент в c

  • автор:

Массивы

Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.

— это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый ), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.

Массив в языке C задается следующим образом:

тип_элементов идентификатор[размер];

где тип_элементов — произвольный тип данных языка C++, который будут иметь элементы массива, например, int , double и т.д.; идентификатор — имя массива, размер — число элементов в нем.

По стандарту языков C и C++, размер массива должен быть константой, определенной на момент компиляции программы, то есть можно определить массив в виде int A[10 + 5] , но нельзя это сделать в виде int A[n] . Однако, компилятор gcc, которым мы пользуемся, допускает объявления второго вида, но при этом нет никаких гарантий, что ваша программа будет откомпилирована каким-либо другим компилятором.

К элементу массива можно обращаться, как идентификатор [ индекс ] . Например, если было сделано объявление

double A[5];

то таким образом создается 5 элементов массива типа double : A[0] , A[1] , A[2] , A[3] , A[4] .

Пример программы, которая создает массив типа int[] , заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива число 1 , затем выводит результат на экран:

#include using namespace std; int main() < int n; // Размер массива int i; // Счетчик в циклах cin >> n; // Считываем размер массива int A[n]; // Объявление массива // Считываем массив for (i = 0; i < n; ++i) < cin >> A[i]; > // Прибавляем по 1 к каждому элементу for (i = 0; i < n; ++i) < A[i] += 1; >// Выводим массив на экран for (i = 0; i < n; ++i) < cout // Переведем курсор на новую строку cout

В этом примере при помощи // обозначается начало комментария, весь текст после начала комментария и до конца строки компилятором игнорируется. Второй способ объявления комментария: в начале комментария поставить знаки /* , а в конце – */ . Это позволяет делать комментарии, занимающие несколько строк. В языке C допустимы только такие комментарии.

Контейнер vector в языке C++

В языке C++ появился более удобный, по сравнению с классическим массивом в языке C, контейнер vector. Он является аналогом обычных массивов, но поддерживает дополнительные возможности, например, его размер можно изменять по ходу программы.

Для использования контейнера vector необходимо в начале программы подключить заголовочный файл vector :

#include

Вектор A данных типа int объявляется так:

vector A;

В данном случае будет создан вектор нулевого размера. При необходимости создать вектор нужного размера можно задать размер вектора в качестве параметра конструктора:

vector A(n);

В любой момент можно изменить размер вектора при помощи вызова метода resize . Текущий размер вектора можно узнать про помощи метода size .

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

Массивы

Часто возникает необходимость хранить не одну переменную, а набор однотипных переменных. Например, список учащихся класса – это набор данных строкового типа, координаты вершин многоугольника или коэффициенты многочлена – это набор числовых данных. Для хранения наборов данных используются структуры данных. Основная структура данных – это массив.

— это структура однотипных данных, занимающих непрерывную область памяти. Массив имеет размер — количество элементов в нем. Каждый элемент массива имеет свой номер (также называемый ), обращение к элементу массива осуществляется путем указания его индекса. В языке C++ элементы нумеруются, начиная с 0, поэтому последний элемент массива имеет номер на 1 меньше размера массива.

Массив в языке C++ задается следующим образом:

тип_элементов идентификатор [ размер ];

где тип_элементов — произвольный тип данных языка C++, который будут иметь элементы массива, например, int , double и т.д.; идентификатор — имя массива, размер — число элементов в нем.

К элементу массива можно обращаться, как идентификатор [ индекс ] . Например, если было сделано объявление

то таким образом создается 5 элементов массива типа double : A[0] , A[1] , A[2] , A[3] , A[4] .

Пример программы, которая создает массив типа int[] , заданного пользователем размера, считывает с клавиатуры его элементы, затем прибавляет к каждому элементу массива число 1 , затем выводит результат на экран:

#include
using namespace std;
int main()
int n; // Размер массива
int i; // Счетчик в циклах

int arr[n]; // Объявление массива (так делать нельзя), лучше вместо такого объявления массива использовать std::vector arr(n);

// Прибавляем по 1 к каждому элементу
for(i=0;i arr[i]+=1;

// Выводим массив на экран
for(i=0;i cout // Переведем курсор на новую строку
cout return 0;
>

В этом примере при помощи // обозначается начало комментария, весь текст после начала комментария и до конца строки компилятором игнорируется. Второй способ объявления комментария: в начале комментария поставить знаки /* , а в конце – */ . Это позволяет делать комментарии, занимающие несколько строк. В языке C допустимы только такие комментарии. ::min()>@w< >— минимальное значение типа @code —> ::max()>@w< >— максимальное значение типа @code. —>

Упражнения

  1. (A) Выведите на экран все элементы массива с четными индексами (то есть A[0] , A[2] , A[4] , . ).
  2. (B) Выведите на экран все четные элементы массива (то есть те элементы, которые являются четными числами).
  3. (C) Найдите количество положительных элементов в массиве. Программа должна считать массив и вывести единственное число – количество положительных элементов в массиве.
  4. (D) Дан массив. Найдите количество элементов массива, которые больше предыдущего элемента в этом массиве.
  5. (E) Массив содержит только ненулевые числа. Определите, есть ли в данном массиве два соседних элемента с одинаковыми знаками. Программа должна вывести YES , если есть два числа с одинаковыми знаками и NO иначе.
  6. (F) Дан массив. Определите, сколько в этом массиве элементов, которые строго больше обоих своих соседей.
  7. (G) Дан массив. Переставьте элементы массива в обратном порядке без использования дополнительного массива. Программа должна считать массив, поменять порядок его элементов, вывести результат на экран (просто вывести элементы массива в обратном порядке – недостаточно!).
  8. (H) Переставьте соседние элементы массива (0-й элемент поменять с 1-м, 2-й с 3-м и т.д. Если элементов нечетное число, то последний элемент остается на своем месте)
  9. (I) Циклически сдвиньте элементы массива вправо (0-й элемент становится 1-м, 1-й становится 2-м, . последний становится 0-м, то есть массив превращается в массив ).
  10. (J) Найдите значение наибольшего элемента в массиве.
  11. (K) Дан массив, отсортированный по возрастанию (каждый элемент массива не меньше предыдущего элемента, например, ). Найдите количество различных чисел в этом массиве. 2 ,x ^2>+. +@code@formula,x n-1 ,x^(n-1)>.> —>

Массивы в Си.

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

Объявление массива в Си

Чтобы работать с массивом данных в Си его необходимо сначала, так же как и переменную объявить в начале программы или процедуры.

Нумерация элементов, индексов в Си начинается с 0. Чтобы объявить, массив нужно

Тип массива Имя массива [количество элементов массива -1];

Например, объявлен массив из 5 целочисленных элементов координат точек x

Типы элементов массива могут быть вещественные float, символьные char

Присвоение значений элементам массива.

Задать первоначальные значения элементам массива можно явно при его объявлении для этого используются фигурные скобки и в них через запятую перечисляются значения элементов массива. Число элементов должно совпадать с размером массива

задаст первоначальные значение x[0]=10 ; x[1]=20; x[2]=3; x[3]=5; x[4]=100;

Можно задать значения присвоением

ввести значение элемента массива можно и с клавиатуры

scanf(“%d”, &x[1]); // элемент массива x с индексом 1 будет введен с клавиатуры

Работа с массивами в Си

При работе с массивами удобно использовать цикл for для того чтобы обработать все элементы массива

Общий формат обработки данных всего массива в Си

Имя массива [i]= выражение; // обработка элемента массива с индексом i

Пример программы 20. Вводится массив с клавиатуры, значения элементов массива увеличивается в 2 раза. Получившийся массив выводится на экран.

// работа с массивом

int a[9];// объявление целочисленного массива a из 10 элементов

int i;// переменная для работы с массивом в цикле

// ввод элементов массива с клавиатуры

printf(«Введите элемент массива %d\n», i);

// увеличиваем элементы массива в 2 раза

// выводим массив на экран

Поиск минимального и максимального элемента массива в Си

При поиске минимального (максимального) элемента в массиве необходимо “пробежать” по всем элементам массива сравнивая его элементы с текущим минимумом (максимумом) . Если текущий элемент окажется меньше текущего минимального значение , то минимальному значению присваивается этот элемент массива.

Пример программы 21. Поиск минимального и максимального значения массива.

// работа с массивом поиск минимального и максимального значений

int a[9];// объявление целочисленного массива a из 10 элементов

int i;// переменная для работы с массивом в цикле

int min;// переменная для минимального значения

int max;// переменная для максимального значения

// ввод элементов массива с клавиатуры

printf(«Введите элемент массива %d\n», i);

min =a[0];// присваиваем минимальному значению значение первого элемента

max=a[0];// присваиваем максимальному значению значение первого элемента

// пробегаем по всем элементам массива

// если текущий элемент массива меньше текущего минимума то присваиваем его значение минимуму

// если текущий элемент массива больше текущего максимума то присваиваем его значение максимуму

// выводим значения на экран

printf(«Максимальное значение %d\n»,max);

printf(«Минимальное значение %d\n»,min);

Вернуться к содержанию Перейти к следующему уроку Матрицы в Си

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

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

#include int main() < int arr[5]; int size = 5; for (int i = 0; i < 5; i++) < scanf_s("%d", &arr[i]); >int max = arr[0]; for (int i = 1; i < size; i++) if (arr[i] >max) max = arr[i]; printf("Max=%d\n", &max); int k=1; do < int j= max + 1; k = k + 1; printf("Next: %d\n", &j); >while (k != 6); > 

я понимаю, что выводятся адреса, но как получить значения? помогите, запутався :С
Отслеживать
задан 22 янв 2021 в 20:48
Мешок Картошки Мешок Картошки
27 5 5 бронзовых знаков

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Вы прям и выводите адрес

printf("Max=%d\n", &max); 

амперсанд в данном случае как раз и означает — возврати адрес. Поэтому, пишем так

printf("Max=%d\n", max); 

Что происходит в цикле в конце — не совсем понятно, но если хотелось просто вывести массив, то это так

for (int i = 0; i < size; i++) printf("%d\n", arr[i]); 

Отслеживать
ответ дан 22 янв 2021 в 20:56
112k 6 6 золотых знаков 93 93 серебряных знака 159 159 бронзовых знаков
В цикле (в вопросе) попытка вывести 5 чисел от max+1 до max+5
22 янв 2021 в 20:59
возможно. но я не уверен
22 янв 2021 в 21:00

да, так, я планировал рекурсивную функцию добавить, а как иначе вывести следующих 5 чисел после максимального из массива-не знаю

22 янв 2021 в 21:04

а вы этого не можете сделать. Если даже максимальное - это самое первое, то за ним будет только 4 числа (весь массив только на 5 элементов). Попробуйте более точно сформулировать задачу

22 янв 2021 в 21:05

последующие 5 не из массива, просто по натуральному ряду. например, максимальное 6, тогда последующие 5: 7,8,9,10,11

22 янв 2021 в 21:07

Что если сделать счетчик, которой определит номер элемента max и потом сделать for с этого элемента до конца?

Отслеживать
ответ дан 22 янв 2021 в 20:54
33 6 6 бронзовых знаков
действительно, как вариант, сейчас попробую)
22 янв 2021 в 20:56

Чтобы вывести не адрес, а значение нужно писать не printf("Max=%d\n", &max); , а printf("Max=%d\n", max); . То есть без & .

Так же вот пример, как можно вывести дальше 5 чисел после максимального:

int k = max + 1; while(k
#include int main() < int arr[5]; int size = 5; for (int i = 0; i < 5; i++) < scanf("%d", &arr[i]); >int max = arr[0]; for (int i = 1; i < size; i++) if (arr[i] >max) < max = arr[i]; >printf("Max=%d\n", max); int k = max + 1; while(k > 

Отслеживать
ответ дан 22 янв 2021 в 21:04
Павел Ериков stand with Russia Павел Ериков stand with Russia
5,650 1 1 золотой знак 12 12 серебряных знаков 31 31 бронзовый знак

В общем случае: если у вас известен адрес, то значение по этому адресу можно получить с помощью оператора разыменования * .

В этом смысле вы могли бы написать

printf("Max=%d\n", *&max); 

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

printf("Max=%d\n", max); 

P.S. Ну, раз тут все пишут еще и свои решения исходной задачи, то.

int main() < srand(time(0)); #define SIZE 20 int arr[SIZE]; for (int i = 0; i < SIZE; i++) arr[i] = rand()%100; int max = arr[0]; for (int i = 1; i < SIZE; i++) if (arr[i] >max) max = arr[i]; printf("Max = %d\n", max); for(int k = 1; k

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *