Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / C++.Ашарина / C_array / Составление_программ.doc
Скачиваний:
29
Добавлен:
17.04.2013
Размер:
55.3 Кб
Скачать

Московский институт электронной техники

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Кафедра “Информатика и программное обеспечение вычислительных систем”

Учебная дисциплина “Информатика”

“Утверждаю”

Зав. Кафедрой ИПОВС

_______Шаньгин В.Ф.

“___”__________1998г.

Лабораторная работа

Составление С – программ с

Использованием статических массивов.

Разработала:

к.т.н. Ашарина И.В.

Москва – 1998г.

Лабораторная работа по курсу "Информатика" Составление с - программ с использованием статических массивов.

Цель работы: 1) изучение описания, ввода и вывода статических массивов на языке С;

2) освоение обработки массивов с использованием вложенных циклов.

Массивы являются наиболее широко используемыми структурами данных. Они дают возможность программам сохранять данные для последующей обработки. Язык С (и C++) поддерживает как статические, так и динамические массивы. В данной работе мы познакомимся только со статическими массивами.

Массив - это множество однотипных переменных.

Рассмотрим следующие темы, связанные со статическими массивами:

• объявление одномерных массивов;

• использование одномерных массивов;

• инициализация одномерных массивов;

• объявление многомерных массивов;

• использование многомерных массивов;

• инициализация многомерных массивов.

Одномерный массив или вектор - это множество переменных, совместно использующих одно и то же имя (имя массива). В одномерном массиве доступ к отдельной переменной осуществляется по индексу (порядковому номеру).

Синтаксис для объявления одномерного массива:

тип имя_массива [число_элементов];

Примеры:

int MyArr[10];

char Literal [31];

double х_arr[100];

При объявлении одномерных массивов в C++ необходимо соблюдение двух правил:

  1. Индекс первого элемента массива равен 0. Это значение нельзя изменить или переопределить.

  2. Объявление массива предполагает точное определение числа его элементов, равное номеру последнего элемента плюс 1.

Доступ к отдельным элементам массива осуществляется по имени массива и индексу элемента.

При работе с массивами рекомендуется проверять допустимость значения индекса массива. Допустимыми являются значения индексов в диапазоне от 0 до <число_элементов-1>.

Ввод элементов массива осуществляется в цикле:

const int MAX = 30;

main()

{ double x[MAX];}

for (int i=0; i< MAX; i++)

{

printf(“\n x[%d]=”,i);

scanf(“%f”,&x[i]);

}

Можно организовать ввод массива, пользуясь генератором случайных чисел:

randmize( ); // инициализировать генератор случайных чисел

for(int i=0;i<MAX;i++)

{

x[i] = raiidom (100);

}

Для инициализации массивов необходимо поместить список начальных значений между фигурными скобками.

Пример:

const int MAX=10;

main()

{

double x[MAX]={12.2, 45.4, 67.2, 12.2, 34.6, 87.4, 83.6, 12.3, 14.8, 55.5};

}

Если число начальных значений меньше числа элементов в массиве, компилятор присвоит оставшимся элементам массива значение 0. Если список начальных значений содержит больше элементов, чем число в квадратных скобках, компьютер генерирует сообщение об ошибке.

Точное число начальных значений можно не указывать, так как C++ позволяет задавать размер массива автоматически, используя число элементов в соответствующем списке начальных значений. Следовательно, число в квадратных ско6ках при описании массива может отсутствовать. В этом случае размер массива определит компилятор. Например, double x[]={1,2,3}.

В многомерном массиве каждый дополнительный индекс обеспечивает дополнительное средство доступа к конкретному элементу. Наиболее распространенным видом многомерного массива являются двумерные массивы или матрицы.

Общий синтаксис для объявления двумерных и трехмерных массивов:

тип массивов [размер 1][размер 2];

тип массивов [размер 1][размер 2][размер 3];

Как и в одномерных массивах, каждый индекс имеет нижнюю границу равную 0, а число элементов для каждого уровня индекса определяется при объявлении многомерного массива.

Примеры:

double matrixA[100][10];

char table[41][22][3];

int index[7][12];

Большинство компиляторов хранит элементы многомерного массива друг за другом, то есть как один длинный массив. Исполняемый модуль вычисляет, где расположен искомый элемент в этом массиве.

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

С++ дает возможность инициализировать многомерный массив способом, анало­гичным инициализации одномерных массивов. Для этого нужно использовать список значений, расположенных в той же последовательности, в которой хранятся в памяти элементы многомерного массива.

Пример:

const int MAX_COL=4;

const int MAX_ROW=3;

main()

{

double x[MAX_ROW][МАХ_COL] = { {1,2,3,4} // строка # 1

{5,6,7,8} // строка #2

{9,10,11,12} // строка # 3

};

}

Ввод многомерных массивов также может быть осуществлен как с клавиатуры:

for(i=0;i< MAX_ROW;i++)

{

for(j=0;j<MAX_COL;j++)

{

printf(“\n x[%d, %d]”, i, j);

scanf("%f”,&x[i][j]);

}

}

так и с помощью генератора случайных чисел:

randomize();

for(i=0;i< MAX_ROW;i++)

{

for(j=0;j<MAX_COL;j++)

{

x[i][j]=random(10);

}

}

Вывод также осуществляется с помощью циклов, одиночных для векторов массивов: или вложенных для многомерных массивов:

for( i=0;i<MAX_ROW; i++)

{

for(j=0;j<MAX_COL;j++)

{

printf(“x[i][j]”, i, j);

}

printf("\n");

}

Требования к отчету.

Отчет должен содержать:

• наименование и цель работы;

• краткие теоретические сведения;

• схему алгоритма;

• текст программы для варианта задания, соответствующего номеру фамилии студента в группе (если студент закреплен за определенной ЭВМ, имеющей номер, то номеру ЭВМ);

• результаты выполнения программы.

Контрольные вопросы.

  1. Позволяет ли C++ наменять размер массива?

  2. Как расположены в памяти элементы многомерных массивов?

  3. Необходимо ли использовать для массивов только предопределенные типы?

  4. Как объявить одномерный и двумерный массив?

  5. Допустимы ли объявления:

int hats[3]={ 10,20,30};

int caps[ ]={5,7,9}; ?

Варианты заданий.

№ варианта

ЗАДАНИЕ

1, 16

Дана целочисленная матрица размера 6х9, содержащая как положительные, так и отрицательные элементы. Сформировать одномерные массивы, состоящие из сумм элементов четных строк и нечетных столбцов. Определить значение и местоположение максимального и минимального элементов матрицы, а также ее минимальное и максимальное значение по абсолютной величине.

2, 17

Дана целочисленная матрица 8х12. Найти сумму эле­ментов заштрихованной области. Определить значение и местоположение максимального элемента из правой верх­ней четверти матрицы, и минимального элемента из ее нижней левой четверти. Сформировать новую матрицу путем приставления полученной суммы к каждому элементу исходной матрицы.

3, 18

Дана целочисленная матрица 8х8. Найти сумму элементов заштрихованной области. Сформировать одномерный массив, содержащий минимальные элементы каждой строки.

4, 19

Дана целочисленная матрица 11х11. Найти сумму элементов заштрихованной области. Сформировать одномерный массив, содержащий максимальные элементы каждого столбца.

5, 20

Дана целочисленная матрица m х k. Найти минимальное значение для верхней половины матрицы и максимальное для ее нижней половины. Сформировать новую матрицу путем прибавления к каждому элементу верхней половины исходной матрицы определенное минимальное значение и каждому элементу ее нижней половины определенного для нее максимального значения.

6, 21

Дана целочисленная матрица m х m. Найти максимальное значение для ее первой четверти и минимальное - для третьей четверти. Сформировать одномерный массив, содержащий произведения элементов каждого столбца матрицы.

7, 22

Дана матрица 5 х 7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий количество символов 'm' в каждом из ее столбцов. Подсчитать количество символов 'а' над третьей строкой матрицы и общее количество символов 'Ь' и 'z’ под третьей ее строкой.

8, 23

Дана целочисленная матрица 9х9. Определить количе­ство нулевых элементов в заштрихованной области, Сформировать одномерный массив, содержащий количе­ство отрицательных элементов каждого столбца матрицы.

9, 24

Дана действительная матрица 7х7. Найти минимальное значение среди элементов, стоящих над главной диагональю и максимальное среди эле­ментов, находящихся ниже главной диагонали, а также их местоположение. Сформировать одномерный массив, cодержащий сумму элементов четных строк и произведение элементов нечетных строк.

10, 25

Дана действительная матрица 6х8. Найти сумму элемен­тов каждой строки для верхней половины матрицы и про­изведение элементов каждой строки для ее нижней поло­вины. Определить значение и местоположение максималь­ного элемента для верхней половины матрицы и мини­мального элемента для ее нижней половины.

11, 26

Дана действительная матрица 7х7. Найти сумму элементов в заштрихованной области. Сформировать но­вую матрицу путем прибавления полученного значения к каждому элементу из не заштрихованной области исходной матрицы.

12, 27

Дана матрица 4х5, элементами которой являются значения символьного типа. Заменить значения символов, больших, чем '0' на '0'. После этого сформировать одномерный массив, содержащий количество элементов '0' в каждом четном столбце матрицы и количества символов, отличных от '0' в каждом нечетном столбце,

13, 28

Дана целочисленная матрица 4х7. Найти среднее арифметическое значение положительных элементов и модулей отрицательных элементов в каждом столбце матрицы. Результаты вычислений записать в одномерные массивы. Определить минимальное и максимальное значение и их местоположение для этой матрицы.

14, 29

Дана целочисленная матрица размером 5х5. Получить новую матрицу путем умножения всех элементов на наименьший по модулю элемент. Сформировать одномерный массив из максимальных элементов каждой строки полученной матрицы.

15, 30

Дана вещественная квадратная матрица порядка 5. Получить новую матрицу прибавления к элементам каждой строки матрицы наименьшего значения элементов этой строки. Сформировать одномерный массив, со­держащий количество четных элементов в четных столбцах полученной матрицы и количество нечетных элементов в ее нечетных столбцах.

Соседние файлы в папке C_array