Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KL_PrJAVU230200.doc
Скачиваний:
22
Добавлен:
17.03.2015
Размер:
702.46 Кб
Скачать

Одномерные массивы Объявление массива.

Синтаксис:

Имя_типа имя_массива[размер массива];

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

Пример:

int mas1 [5];

float mas2 [25];

char mas3 [60];

После выделения памяти в элементах массива находится «мусор». При объявлении массива возможна инициализация.

int a[4]={7,-3,8,243};

Если констант меньше, чем необходимо, остальные элементы массива обнуляются. Если констант больше, возникает ошибка компиляции.

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

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

Пример:

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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]