
Int main()
{
const int n=10;
int a[n];
int i,imax,imin,count;
srand(time(NULL));
for (i=0;i<n;i++) a[i]=rand()%20;
for (i=0;i<n;i++)
{
cout<<"A["<<i<<"]="<<a[i]<<endl;
}
for (i=imax=imin=0;i<n;i++)
{
if (a[i]>a[imax]) imax=i;
if (a[i]<a[imin]) imin=i;
}
cout <<" max= "<<a[imax]<<" min= "<<a[imin];
int ibeg=imax < imin ? imax : imin;
int iend=imax > imin ? imax : imin;
cout <<" ibeg= "<<ibeg<<" iend= "<<iend;
for (count=0,i=ibeg+1;i<iend;i++)
if (a[i]>0) count++;
cout <<"Koli4estvo polozitelnih: "<<count<<endl;
cin.get();cin.get();
return 0;
}
Замечание: в С++ нельзя присваивать один массив другому.
Например:
float x[7], y[7];
…
x=y; // ошибка
Для того, чтобы реализовать такое присваивание, нужно использовать цикл, например:
for (i=0; i<7; i++) x[i]=y[i];
Замечание: компилятор С++ не контролирует выход за границы массива. Программист сам должен следить за значениями индексов, иначе программа будет нарушена.
Например:
float MAS[10];
for ( i = 0; i < 100; i++)
MAS[i] = i+5;
Здесь будет выполнено 100 итераций, несмотря на то, что массив MAS имеет длину 10.
Было принято решение: поскольку С++ - язык профессионалов, то компилятор не будет тратить время на проверку принадлежности индекса определенному диапазону.
При работе с массивами очень часто требуется одинаково обработать все элементы или часть элементов массива. Для этого организуется перебор массива.
Перебор элементов массива характеризуется:
направлением перебора;
количеством одновременно обрабатываемых элементов;
характером изменения индексов.
По направлению перебора массивы обрабатывают:
слева направо (от начала массива к его концу);
справа налево (от конца массива к началу);
от обоих концов к середине.
Индексы могут меняться
линейно (с постоянным шагом);
нелинейно (с переменным шагом).
Перебор массива по одному элементу. Элементы можно перебирать:
Слева направо с шагом 1, используя цикл с параметром
for(int i=0;i<n;i++){обработка a[i];}
Слева направо с шагом отличным от 1, используя цикл с параметром
for (int i=0;i<n;i+=step){обработка a[i];}
Справа налево с шагом 1, используя цикл с параметром
for(int i=n-1;i>=0;i--){обработка a[i];}
Справа налево с шагом отличным от 1, используя цикл с параметром
for (int i=n-1;i>=0;i-=step){обработка a[i];}
Многомерные массивы
http://iguania.ru/uchebnik-po-osnovam-programmirovaniya-dlya-nachinaiuschich/glava-15-dvumernie-massivi.html
В С++ можно использовать многомерные массивы. Элементом массива может быть в свою очередь тоже массив. Таким образом, мы приходим к понятию двумерного массива или матрицы, а также многомерных массивов.
Определение многомерного массива:
<тип> <имя массива> [<размер1>][<размер2>] … [<размерn>];
Например:
int MATRIC[2][3];// матрица целых чисел размерностью 2х3
Для доступа к элементу многомерного массива используется конструкция
<имя массива> [<индекс1>][<индекс2>] … [<индексn>];
В памяти компьютера многомерный массив размещается так, что вначале меняется самый правый индекс.
Например:
int A[2][3];
A[0][0], A[0][1],A[0][2],
A[1][0], A[1][1],A[1][2]
Для наглядности двумерный массив можно представить в виде таблицы с числом строк, равным первому размеру массива, и числом столбцов, равным второму размеру массива, например:
Массив А |
Столбец 0 |
Столбец 1 |
Столбец 2 |
Строка 0 |
18 индексы [0][0] |
21 индексы [0][1] |
5 индексы [0][2] |
Строка 1 |
6 индексы [1][0] |
7 индексы [1][1] |
11 индексы [1][2] |
Как и одномерные, многомерные массивы можно инициализировать при объявлении.
int A[2][3]={{4,3,2},{1,-1,-2}};
double B[2][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}};
Может быть использована и более компактная запись:
int A[2][3]={4,3,2,1,-1,-2};
В этом случае многомерный массив инициализируется таким же образом, как если бы он был одномерным. Если необходимо обнулить содержимое многомерного массива можно поступить следующим образом:
int imassiv[2][3]= {0};
Задача: Дана целочисленная матрица размером N на M (максимум 5 на 10). Осуществить ввод матрицы. Все элементы с нечетным произведением номера строки и номера столбца увеличить в два раза. Полученную матрицу вывести на экран.
#include <iostream>
using namespace std;