Мегаобучалка Главная | О нас | Обратная связь


Отсутствие проверки границ



2019-11-21 229 Обсуждений (0)
Отсутствие проверки границ 0.00 из 5.00 0 оценок




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

Тема : Основы программирования на СИ. Массивы

Цель: Изучить алгоритмы работы с одномерными и двумерными массивами и способы их реализации на языке Си.

Данная лабораторная работа предусматривает в качестве контроля отчет в печатном виде и его устную защиту

Отчет должен включать в себя:

1. Текст задания

2. Блок – схему решения

3. Программный код с комментариями

4. Примеры результатов работы программы.

Задания для самостоятельного выполнения.

 

Одномерные массивы

 

Вариант №1

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· сумму отрицательных элементов массива;

· упорядочить элементы массива по возрастанию методом пузырька.

 

Вариант №2

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· сумму положительных элементов массива;

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

 

Вариант №3

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· произведение элементов массива с чётными номерами;

· упорядочить элементы массива по возрастанию методом пузырька.

Вариант№4

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· сумму элементов массива с нечётными номерами;

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

 

Вариант №5

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· максимальный трицательный элемент массива;

· упорядочить элементы массива по возрастанию методом пузырька.

 

Вариант №6

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· минимальный положительный элемент массива;

· упорядочить элементы массива по возрастанию методом пузырька.

 

Вариант №7

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· номер максимального элемента;

упорядочить элементы массива по возрастанию методом пузырька

 

Вариант №8

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· сумму элементов массива, расположенных между первым и вторым отрицательными элементами;

· упорядочить элементы массива по возрастанию методом пузырька.

 

Вариант №9

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· максимальный по модулю элемент массива;

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

 

Вариант №10

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· Отсортировать элементы по убыванию методом пузырька;

· сумму элементов, расположенных после минимального;

 

Вариант№11

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· номер минимального по модулю элемента массива;

· Отсортировать элементы по убыванию методом пузырька;

 

Вариант №12

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· Отсортировать элементы по убыванию методом пузырька;

· Заменить все отрицательные элементы массива их квадратами .

 

Вариант №13

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· количество элементов меньших среднего арифметического;

· упорядочить элементы массива по возрастанию методом пузырька.

Вариант №14

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

· произведение элементов массива, расположенных между максимальным и минимальным элементами;

· упорядочить элементы массива по возрастанию методом пузырька.

Вариант №15

1. В одномерном массиве, состоящем из n целочисленных элементов, вычислить:

· произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами;

·  упорядочить элементы массива по убыванию методом пузырька

Вариант №16

1. В одномерном массиве, состоящем из n вещественных элементов:

· обнулить каждый третий нечетный элемент;

· Отсортировать положительные элементы по возрастанию методом пузырька

Вариант №17

1. В одномерном массиве, состоящем из n целочисленных элементов, вычислить:

· Сумму всех элементов, лежащих левее первого отрицательного;

· Отсортировать элементы по убыванию, меньшие среднего арифметического

 

Вариант №18

1. В одномерном массиве, состоящем из n целочисленных элементов, вычислить:

· Отсортировать элементы по убыванию, большие среднего арифметического;

· Найти, подсчитать количество  и обнулить отрицательные элементы массива

Вариант №18

1. В одномерном массиве, состоящем из n целочисленных элементов:

· отсортировать элементы, лежащие правее минимального, методом пузырька.

· обнулить каждый третий элемент;

Вариант №19

1. В одномерном массиве, состоящем из n вещественных элементов:

· обнулить каждый второй нечетный элемент;

· Отсортировать положительные элементы по возрастанию методом пузырька;

.

Вариант №20

1. В одномерном массиве, состоящем из n целочисленных элементов:

· найти сумму элементов, больших заданного пользователем с клавиатуры.

· отсортировать методом пузырька элементы массива;

 

Двумерные массивы

1. Объявите двумерный целочисленный массив, в котором 10 строк по 7 элементов. Определите произведение каждого нечетного столбца и произведение первой и последней строки массива.

2. Объявите двумерный вещественный массив, в котором 5 x 4 элементов. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

3. Объявите двумерный целочисленный массив, в котором 4 x 4 элементов. Найдите суммы элементов массива по строкам и распечатайте только те, которые больше заданного числа. Распечатайте найденные суммы по образцу:

Сумма элементов 0-й строки равна ...Сумма элементов 1-й строки равна ....

4. Объявите двумерный вещественный массив, в котором 5 x 6 элементов. Найдите в каждом столбце среднее арифметическое элементов. Распечатайте найденные средние арифметические и номер соответствующего столбца.

5. Объявите двумерный целочисленный массив, в котором 7 x 4 элементов. Замените в массиве максимальные элементы каждой строки нулями. Распечатайте массив в виде таблицы дважды: до и после замены.

6. Объявите двумерный целочисленный массив, в котором 4 x 5 элементов. Определите минимальный элемент в каждом столбце и распчечатайте.

7. Объявите двумерный целочисленный массив, в котором 6 x 6 элементов. Найдите суммы элементов массива по строкам и распечатайте только те, которые меньше заданного числа. Распечатайте все найденные суммы по образцу:

Сумма элементов 0-й строки равна ...Сумма элементов 1-й строки равна ....

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

9. Объявите двумерный вещественный массив, в котором 5 x 5 элементов Распечатайте его в виде таблицы. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

10. Объявите двумерный целочисленный массив, в котором 9 x 7 элементов. Распечатайте массив в виде таблицы. Найдите суммы элементов массива по столбцам. Распечатайте найденные суммы по образцу:

Сумма элементов 0-го столбца равна ...Сумма элементов 1-го столбца равна ....

11. Объявите двумерный вещественный массив, в котором 4 x 5 элементов. Распечатайте его в виде таблицы. Найдите в столбцах, не содержащих нулевые элементы, среднее арифметическое элементов. Распечатайте найденные средние арифметические с указанием соответствующего номера столбца.

12.  Объявите двумерный целочисленный массив, в котором 5 x 6 элементов. Определите сумму первой строки, произведение последнего столбца и количество нулей во всем массиве.

13. Объявите двумерный целочисленный массив, в котором 5 x 7 элементов. Замените в массиве максимальные элементы каждой строки заданным числом. Распечатайте массив в виде таблицы дважды: до и после замены.

14. Объявите двумерный целочисленный массив, в котором 4 x 6 элементов. Определите минимальный элемент всего массива и минимальные элементы для каждой строки. Распечататйте результаты с комментариями.

15. Объявите двумерный целочисленный массив, в котором 10 строк по 7 элементов. Определите произведение каждого нечетного столбца и произведение первой и последней строки массива.

16. Объявите двумерный вещественный массив, в котором 5 x 4 элементов. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

17. Объявите двумерный целочисленный массив, в котором 4 x 4 элементов. Найдите суммы элементов массива по строкам и распечатайте только те, которые больше заданного числа. Распечатайте найденные суммы по образцу:

Сумма элементов 0-й строки равна ...Сумма элементов 1-й строки равна ....

18. Объявите двумерный вещественный массив, в котором 5 x 6 элементов. Найдите в каждом столбце среднее арифметическое элементов. Распечатайте найденные средние арифметические и номер соответствующего столбца.

19. Объявите двумерный целочисленный массив, в котором 7 x 4 элементов. Замените в массиве максимальные элементы каждой строки нулями. Распечатайте массив в виде таблицы дважды: до и после замены.

20. Объявите двумерный целочисленный массив, в котором 4 x 5 элементов. Определите минимальный элемент в каждом столбце и распчечатайте.

21. Объявите двумерный целочисленный массив, в котором 6 x 6 элементов. Найдите суммы элементов массива по строкам и распечатайте только те, которые меньше заданного числа. Распечатайте все найденные суммы по образцу:

Сумма элементов 0-й строки равна ...Сумма элементов 1-й строки равна ....

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

23. Объявите двумерный вещественный массив, в котором 5 x 5 элементов Распечатайте его в виде таблицы. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

24. Объявите двумерный целочисленный массив, в котором 9 x 7 элементов. Распечатайте массив в виде таблицы. Найдите суммы элементов массива по столбцам. Распечатайте найденные суммы по образцу:

Сумма элементов 0-го столбца равна ...Сумма элементов 1-го столбца равна ....

25. Объявите двумерный вещественный массив, в котором 4 x 5 элементов. Распечатайте его в виде таблицы. Найдите в столбцах, не содержащих нулевые элементы, среднее арифметическое элементов. Распечатайте найденные средние арифметические с указанием соответствующего номера столбца.

26.  Объявите двумерный целочисленный массив, в котором 5 x 6 элементов. Определите сумму первой строки, произведение последнего столбца и количество нулей во всем массиве.

27. Объявите двумерный целочисленный массив, в котором 5 x 7 элементов. Замените в массиве максимальные элементы каждой строки заданным числом. Распечатайте массив в виде таблицы дважды: до и после замены.

28. Объявите двумерный целочисленный массив, в котором 4 x 6 элементов. Определите минимальный элемент всего массива и минимальные элементы для каждой строки. Распечататйте результаты с комментариями.

29. Объявите двумерный целочисленный массив, в котором 10 строк по 7 элементов. Определите произведение каждого нечетного столбца и произведение первой и последней строки массива.

30. Объявите двумерный вещественный массив, в котором 5 x 4 элементов. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

31. Объявите двумерный целочисленный массив, в котором 5 x 7 элементов. Замените в массиве максимальные элементы каждой строки заданным числом. Распечатайте массив в виде таблицы дважды: до и после замены.

32. Объявите двумерный целочисленный массив, в котором 4 x 6 элементов. Определите минимальный элемент всего массива и минимальные элементы для каждой строки. Распечататйте результаты с комментариями.

33. Объявите двумерный целочисленный массив, в котором 10 строк по 7 элементов. Определите произведение каждого нечетного столбца и произведение первой и последней строки массива.

34. Объявите двумерный вещественный массив, в котором 5 x 4 элементов. Найдите в каждом столбце наибольший элемент. Распечатайте найденные элементы под соответствующим столбцом.

 

 

Методические указания

 

Массивы - это группа элементов одного типа (double, float, int и т.п.). Из объявления массива компилятор должен получить информацию о типе элементов Объявление массива имеет два формата:

спецификатор-типа имя_массива [константное_выражение];

спецификатор-типа имя_массива [ ];

Спецификатор-типа задает тип элементов объявляемого массива. Элементами массива не могут быть функции и элементы типа void.

Константное_выражение в квадратных скобках задает количество элементов массива.

int sample [I0];

#define Nmax 10

int sample [Nmax] /*равносильно объявлению int sample [I0];*/

При объявлении массива константное_выражение может быть опущено в случаях, если:

- при объявлении массив инициализируется,

- массив объявлен как формальный параметр функции,

- массив объявлен как ссылка на массив, явно определенный в другом файле.

Обращение к элементам массива осуществляется с помощью индексированного имени. В языке Си первый элемент массива получает индекс 0. Таким образом, выше объявлен массив с десятью элементами: от sample[0] до sample[9].

Массив занимает непрерывную область памяти. Для одномерного массива полный объем занимаемой памяти в байтах вычисляется по формуле:

Байты = sizeof (тип) * длина массива

Массив представляет собой набор однотипных данных, расположенных в памяти таким образом, чтобы по индексам элементов можно было легко вычислить адрес соответствующего значения. Например, пусть одномерный массив A состоит из элементов, расположенных в памяти подряд по возрастанию индексов, и каждый элемент занимает по k байт. Тогда адрес i-того элемента вычисляется по формуле:

адрес(A[i]) = адрес(A[0]) + i*k

Отсутствие проверки границ

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

 

Пример:

#define N_max 25

int b1[N_max];

 

Так как индексы в Си всегда отсчитыватся от 0, так что, например, в массиве b1можно манипулировать с элементами b1[0], b1[1], ...,b1[24]. Элемент b1[25] массиву b1 уже не принадлежит и попытка записи в него может привести к непредсказуемым последствиям.



2019-11-21 229 Обсуждений (0)
Отсутствие проверки границ 0.00 из 5.00 0 оценок









Обсуждение в статье: Отсутствие проверки границ

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (229)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)