Автор работы: Пользователь скрыл имя, 25 Февраля 2011 в 18:47, контрольная работа
Массив - набор данных одного и того же типа, собранных под одним именем. Каждый элемент массива имеет свой порядковый номер, который называется индексом. Соответственно каждый элемент массива определяется именем массива и порядковым номером элемента. Индекс (номер элемента) в языке Си всегда целое число.
int a[3][4]={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
Количество
инициализаторов не обязано совпадать
с количеством элементов
Например следующие две инициализации различны
int a[2][5]={{1, 2, 3, 4}, {5, 6, 7}};
int a[2][5]={1, 2, 3, 4, 5, 6, 7};
В первой случаем массив заполниться так
1 | 2 | 3 | 4 |
5 | 6 | 7 |
а во втором случае так
1 | 2 | 3 | 4 | 5 |
6 | 7 |
Пустые клетки это неопределённые значения.
Символьные
массивы могут
char str[15]={'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!'};
а могут как строка символов:
char str[15]="Hello world!";
В последнем случае в конец строковой константы компилятор поставит символ '\0'.
Допускается объявление и инициализация массива без указания размера массива. Такие массивы называют открытыми массивами.
int a[]={1, 2, 3, 4, 5, 6};
Компилятор сам определит размер массива. Таким способом очень удобно объявлять строки
char
str[]="Необходимое число
Так же открытые массивы очень удобно и эффективно применять при объявлении в формальных параметрах функций. Это можно применять, если функция должна обрабатывать массивы различного размера.
Например,
void main(void)
{
void myfunc(int mas[]); // Объявление функции
int
mas[<нужное число элементов>]; //
объявление массива нужного
...
myfunc(mas); // сюда можно подавать массивы с разными размерами
}
void myfunc(int mas[]) // mas - открытый массив
{
// .........что-то делается с массивом
}
При объявлении открытых массивов можно не указывать размер только в самых левых квадратных скобках, в остальных должны быть проставлены размеры.
Например, этот массив можно проинициализировать так
int a[][5]={1, 2, 3, 4, 5,
6, 7, 8, 9, 10};
т.е. он
будет состоять из двух строк и
пяти столбцов.
Задача: Целочисленная, квадратная матрица. Найти произведение элементов матрицы. Найти произведение диагоналей, параллельных главное диагонали матрицы
Решание:
#include <iostream.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
int main()
{
srand(time(0));
int a[5] [5],i,y,c;
c=1;
for (i=0; i<5; i++)
for (y=0; y<5; y++)
{
a[i][y]= 1+ rand()% 2;
}
for(i=0; i<5; i++)
{
cout<<'\n';
for (y=0; y<5; y++)
cout<<" " << a[i][y];
}
for (i=0; i<5; i++)
{
for (y=0; y<5; y++)
{
c=c*a[i][y];
}
}
int max=1,pr1=1,pr2=1,max2=1,pr;
cout<<"\n
произведение элементов
for (int z = 5; z > -1; z--)
{
for (int k = 0 ; k < 5 - z ; k++)
{
if (max<a[k][k+z])
max = a[k][k+z];
}
pr1*=max;
max=1;
}
for ( z = 4; z > 0; z--)
{
for (int k = 0 ; k < 5 - z ; k++)
{
if (max2<a[k+z][k])
max2 = a[k+z][k];
}
pr2*=max2;
max2=1;
}
pr=pr1*pr2;
cout<<"\n
произведение диоганалей
return 0;
}