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

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

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

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

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

}

 


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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



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

0.021 с.