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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

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

2017-11-17 338
Обращение к элементам массива по имени. 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.006 с.