Обращение к элементам массива по имени. — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Обращение к элементам массива по имени.

2017-11-17 350
Обращение к элементам массива по имени. 0.00 из 5.00 0 оценок
Заказать работу

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

Пример:

int a[ 5];

a [0]-к первому по счету или с инд=0.

a [1]-

a [2]-

…….

a[4] – к последнему элементу массива.

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

Имя массива, объявленного статически, является адресом-константой элемента массива с индексом 0.

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

 

номер 1 2 3 4 5

индекс 0 1 2 3 4

         

.

 

имя эл.масс. a[0]a[1]a[2] a[3] a[4]

адрес эл.масс. a a+1 a+2 a+3 a+4

знач.эл.масс. *a *(a+1) *(a+2) *(a+3) *(a+4)

По адресу

Выделение памяти под массив динамически.

Выделение памяти динамически – выделение памяти под массив в процессе выполнения программы.

Выделить память под 7 элементов массива целого типа:

# define SIZE 7

int *p;

p=new int[SIZE];

p-содержит адрес начала массива..

 

Организация перебора элементов числового массива.

 

int a [10];

cin>>* a;

cin>>* (a+1); или for (i=0; i<10; i++)

cin>>*(a+2); cin>>* (a+i); //или cin>>a[i];

…………………

cin>>* (a+9);

 

Стандартный цикл перебора символов в строке.

 

char str [80];

int kol=0;

cin>>str;

for (i=0; str [i]!=0; i++) //подсчет количества символов в строке

kol++;

 

Задача 1:

 

Дан массив статически, заполнить с клавиатуры

Вычислить сумму элементов кратных числу k.

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

int main (void)

{

const int N=5;

int mas[N],k,i,sum=0;

cout << "\nВведите K: ";

cin >> k;

cout << "\nВведите массив: ";

for (i=0; i<N; i++)

cin >> mas[i];

for (i=0; i<N; i++) {

if (mas[i]%k==0)

sum += mas[i];

}

cout << "\nS=" << sum << endl;;

return 0;

}

 

Задача 2:

 

Выделить память динамически. Заполнить массив случайными числами. Вывести массив на экран. Вычислить минимум в массиве

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

#include "time.h"

#include "stdlib.h"

int main (void)

{

srand((unsigned)time(NULL));

int n, i, m=10000;

double min;

 

cout << "\nВведите размерность массива: ";

cin >> n;

double *p=new double[n];

for (i=0; i<n; i++) {

p[i] = (rand()%(2*m+1)-m)*0.9738179;

}

min = p[0];

cout << "\nмассив ";

for (i=0; i<n; i++) {

cout << i << "=" << p[i] << " ";

if (min>p[i])

min=p[i];

}

cout << "\nmin=" << min << endl;;

return 0;

}

Задача 3.

Задать строку статически. Ввести с клавиатуры и определить кол-во символов в строке

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

int main(void)

{

char str[80];

int n, i;

cout << "\n Введите строку:";

cin.getline(str,80);

for (i=0, n=0; str[i]!=0; i++) {

n++;

}

cout << "\n Кол-во=" << n << endl;

return 0;

}

 

Задача 4.

Решить задачу 1, выделяя память динамически и работая через адрес

 

#include<iostream> //подключение системных средств для

using namespace std; //возможности использовать потоки ввода-вывода

int main(void)

{

char *p=new char[80];

int n=0;

cout << "\n Введите строку:";

cin.getline(p,80);

// цикл построен таким образом, что p содержит адрес текущего символа

 

while(*p!=0) {

n++;

p++; // Увеличиваем адрес для перехода к следующему символу

}

cout << "\n Кол-во=" << n << endl;

return 0;

}

 

Стандартные функции обработки строк

Все строки обязательно должны оканчиваться нуль-символом, и при объявлении размера массива необходимо это учитывать. Когда вы объявляете строковую переменную как массив символов, увеличьте размер массива на один символ для нуль-символа. Использование строк с конечным нулем также имеет то преимущество, что здесь отсутствуют ограничения, накладываемые реализацией C++. Кроме того, структура очень проста.

 

Ввод строк

 

В программах, которые мы рассматривали, операторы потокового вывода выводили строковые константы; C++ поддерживает потоковый вывод для строк как специального не-предопределенного типа данных. (Можно сказать, что это было сделано по требованию масс.) Операции и синтаксис для вывода строковых переменных остаются прежними. При вводе строк операция извлечения из потока» не всегда будет работать так, как вы ожидаете, поскольку строки часто содержат пробелы, которые игнорируются оператором ввода; поэтому вместо оператора ввода вам нужно использовать функцию getline. Эта функция вводит заданное количество символов.

 

Функция getline

 

Перегруженная функция getline объявляется следующим образом:

istreams getline(signed char *buffer,

int size,

char delimiter = '\n');

istreams getline(unsigned char *buffer,

int size,

char delimiter = '\n');

istream& getline(char *buffer,

int size,

char delimiter = '\n');

Параметр buffer является указателем на строку, в которую помещаются вводимые символы. Параметр size задает максимальное количество вводимых символов. Параметр delimeter определяет символ-ограничитель, при появлении которого ввод символов прекращается прежде, чем будут введены все size символов. Параметр delimeter имеет аргумент по умолчанию, равный '\n'. В случае ввода символов с клавиатуры этот символ появляется в потоке ввода при нажатии клавиши

 

Пример

#include <iostream>

int main()

{

char name[80];

cout «"Enter your name: ";

cin.getline(name, sizeof(name) - 1);

cout «"Hello " «name «", how are you?";

return 0;

}

 


Поделиться с друзьями:

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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.02 с.