Цель и задача работы: изучение структурированных типов данных – одномерный массив и двумерный массив. Написать программу, обрабатывающую массивы.
Теоретические положения
Массив – это совокупность переменных одного типа, к которым обращаются с помощью общего имени. Доступ к отдельному элементу массива может осуществляться с помощью индекса. Массивы могут иметь одну или несколько размерностей. Стандартный вид объявления одномерного массива следующий:
тип имя_переменной [размер];
Здесь тип объявляет тип массива и является типом каждого элемента массива. Параметр размер определяет, сколько элементов содержит массив. В одномерном массиве полный размер массива в байтах определяется следующим образом:
Общее число байт = sizeof (тип)*число элементов,
где sizeof это оператор, возвращающий длину в байтах переменной или типа.
У всех массивов первый элемент имеет индекс 0. Поэтому, если написать
char p [10];
то будет объявлен массив символов из 10 элементов, причем эти элементы адресуются индексами от 0 до 9. Следующая программа загружает целочисленный массив числами от 0 до 9 и выводит его:
#include <stdio.h>
int main(void)
{
int x[10];
int t;
for (t=0; t<10; t++)
x[t]=t;
for (t=0; t<10; t++)
printf(“%d “, x[t]);
return 0;
}
По умолчанию компилятор не проверяет выход за границы массивов. Можно выйти за границу массива и записать значение в какую-либо область памяти, не относящуюся к массиву, или даже в код программы. Проверка выхода за границы массива возлагается на программиста.
Двух или более мерные массивы называются многомерными. Рассмотрим описание и использование 2-х мерного массива:
int i,j,k,n;
int name[10][20];
i=5;
j=3;
k=2;
n = name[i+j][1] + name[k][2];
Двухмерный массив в С хранится как строка, так что крайний правый индекс меняется быстрее всего. Этот массив имеет 10 строк и 20 столбцов. Таким образом, трехмерный массивы хранятся как последовательность таблиц (двухмерных массивов), каждый из которых в свою очередь представляет собой строку. Четырехмерные массивы хранятся как последовательность кубов (трехмерных массивов), и т.д.
Сейчас же рассмотрим более сложный пример, допустим мы хотим ввести, а затем распечатать все элементы двухмерного массива, в котором количество строк равно количеству столбцов. Попробуйте сделать это сами перед прочтением этого примера:
#include "stdio.h"
#include "conio.h"
int main(void)
{
const int MAXSIZE;
int counter_1,counter_2;
int size;
int mas[MAXSIZE][ MAXSIZE];
clrscr();
printf ("Please enter the number of rows and columns in your matrix (the max is %d):", MAXSIZE);
scanf("%i",&size);
printf("\nYou have entered the number of raws and columns which is equal to %i\n",size);
if (size> MAXSIZE | size<0 )
{
printf("\nYou have entered an illegal parameters");
return(0);
}
printf("\n");
for (counter_1=0;counter_1<size;counter_1++)
for (counter_2=0;counter_2<size;counter_2++)
{
printf("Please enter the element of the matrix in %i-th row and in %i-th column:\n",counter_1+1,counter_2+1);