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

5.4. Вложенные циклы

Задача №7: Напечатать Nпростых чисел.

#include<iostream.h>

void main()

{

int a=1,n,d;

cout<<"\nEnter N";

cin>>n;

for(int i=0;i<n;)//внешний цикл

{

a++;d=1;

do//внутренний цикл

{

d++;

}

while(a%d!=0);//конец внутреннего цикла

if(a==d){

cout<<a<<" ";

i++;}

}//конец внешнего цикла

}

6. Массивы

В языке Си/Си++ ,кроме базовых типов, разрешено вводить и использовать производные типы, полученные на основе базовых. Стандарт языка определяет три способа получения производных типов:

  • массив элементов заданного типа;

  • указатель на объект заданного типа;

  • функция, возвращающая значение заданного типа.

Массив – это упорядоченная последовательность переменных одного типа. Каждому элементу массива отводится одна ячейка памяти. Элементы одного массива занимают последовательно расположенные ячейки памяти. Все элементы имеют одно имя - имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером. Чтобы отвести в памяти нужное количество ячеек для размещения массива, надо заранее знать его размер. Резервирование памяти для массива выполняется на этапе компиляции программы.

6.1. Определение массива в Си/Си++

inta[100];//массив из 100 элементов целого типа

Операция sizeof(a) даст результат 400, т. е.100 элементов по 4 байта.

Элементы массива всегда нумеруются с 0.

0

1

2

…..

99

Чтобы обратиться к элементу массива, надо указать имя массива и номер элемента в массиве (индекс):

a[0] – индекс задается как константа,

a[55] – индекс задается как константа,

a[I] – индекс задается как переменная,

a[2*I] – индекс задается как выражение.

Элементы массива можно задавать при его определении:

inta[10]={1,2,3,4,5,6,7,8,9,10} ;

Операция sizeof(a) даст результат 40, т. е.10 элементов по 4 байта.

inta[10]={1,2,3,4,5};

Операция sizeof(a) даст результат 40, т. е.10 элементов по 4 байта. Если количество начальных значений меньше, чем объявленная длина массива, то начальные элементы массива получат только первые элементы.

inta[]={1,2,3,4,5};

Операция sizeof(a) даст результат 20, т. е.5 элементов по 4 байта. Длин массива вычисляется компилятором по количеству значений, перечисленных при инициализации.

6.2. Обработка одномерных массивов

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

Перебор элементов массива характеризуется:

  • направлением перебора;

  • количеством одновременно обрабатываемых элементов;

  • характером изменения индексов.

По направлению перебора массивы обрабатывают :

  • слева направо (от начала массива к его концу);

  • справа налево (от конца массива к началу);

  • от обоих концов к середине.

Индексы могут меняться

  • линейно (с постоянным шагом);

  • нелинейно (с переменным шагом).

6.2.1. Перебор массива по одному элементу

Элементы можно перебирать:

  1. Слева направо с шагом 1, используя цикл с параметром

for(int I=0;I<n;I++){обработка a[I];}

  1. Слева направо с шагом отличным от 1, используя цикл с параметром

for (int I=0;I<n;I+=step){обработка a[I];}

  1. Справа налево с шагом 1, используя цикл с параметром

for(int I=n-1;I>=0;I--){обработка a[I];}

  1. Справа налево с шагом отличным от 1, используя цикл с параметром

for (int I=n-1;I>=0;I-=step){обработка a[I];}