МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра МО ЭВМ ОТЧЕТ по лабораторной работе №1 по дисциплине «Программирование» Тема: Условия, циклы, оператор switch Студент гр. 0304 Алексеев Р.В. Преподаватель Чайка К.В. Санкт-Петербург 2020 Цель работы. Изучить основные управляющие конструкции языка C (условия, циклы,условия, циклы, оператор switch), массивы и функции. Задание. Вариант №2. Напишите программу, выделив каждую подзадачу в отдельную функцию. Реализуйте программу, на выход которой подается одно из значений 0, 1, 2, 3 и массив целых чисел размера не больше 100. Числа разделены пробелами. Строка заканчивается символом перевода строки. В зависимости от значения, функция должна выводить следующее: 0 : максимальное число в массиве. (условия, циклы,max)) 1 : минимальное число в массиве. (условия, циклы,min)) 2 : разницу между максимальным и минимальным элементом. (условия, циклы,diff) 3 : сумму элементов массива, расположенных до первого минимального элемента. (условия, циклы,sum) иначе необходимо вывести строку «Данные некорректны.» Основные теоретические положения. Использован заголовочный файл stdio.h. Из stdio.h для ввода чисел использована функция scanf(const char *format, …), для ввода символов функция getchar(). Так же использованы управляющие конструкции языка C: if, switch, for, while. Выполнение работы. 1) Подключение стандартного заголовочного файла stdio.h. 2) Создание прототипов требуемых функций: int get_max(int n, int arr[]); 2 int get_min(int n, int arr[]); int get_diff(int n, int arr[]); int get_sum(int n, int arr[]); Все они принимают на вход в качестве аргументов переменную i типа int, определяющий длину массива, и массив arr переменных типа int. 3) В функции int main() объявляются переменные int n (условия, циклы,для хранения кода операции), int a (условия, циклы,для хранения результатов операции) и int i (условия, циклы,для хранения номера элемента массива), так же создается массив int arr[100]. При помощи scanf вводится код операции в переменную int n. 4) В цикле while считываются и записываются в массив числа, пока не будет встречен символ конца строки (getchar() != '\n') или не будет достигнуто максимальное количество символов (i < 100). 5) В конструкции switch проверяется значение введенного кода операции. Если код совпадёт с одним из значений, то результат операции будет выведен на экран с помощью printf, иначе будет выведено сообщение «Данные некорректны». 6) В функции int get_max(int i, int arr[]) объявляется переменная int a (условия, циклы,для хранения результатов операции). При помощи цикла for перебираются все элементы массива int arr[], значение наибольшего из них присваивается переменной int a, значение этой переменной возвращается функции int main(). 7) В функции int get_min(int i, int arr[]) объявляется переменная int a (условия, циклы,для хранения результатов операции). При помощи цикла for перебираются все элементы массива int arr[], значение наименьшего из них присваивается переменной int a, значение этой переменной возвращается функции int main(). 8) В функции int get_diff(int i, int arr[]) объявляются переменные int a (условия, циклы,для хранения результатов операции), int c (условия, циклы,для хранения значения наименьшего элемента массива int arr[]), int b (условия, циклы,для хранения значения наибольшего элемента массива int arr[]). При помощи функций int 3 get_max(int i, int arr[]) и in)t get_min(int i, int arr[]) переменным int b и int c присваиваются наибольшее и наименьшее значения массива int arr[] соответственно. Разница переменных int b и int c присваивается переменной int a, значение которой возвращается функции int main(). 9) В функции int get_sum(int i, int arr[]) объявляются переменные int a (условия, циклы,для хранения результатов операции), int h (условия, циклы,для хранения номера первого наименьшего элемента массива int arr[]) и int b (условия, циклы,для хранения значения наименьшего элемента массива int arr[]). При помощи функции int get_min(int i, int arr) значение наименьшего элемента массива int arr[] присваивается переменной int b. При помощи первого цикла for перебираются значения элементов массива int arr[], номер первого наименьшего элемента присваивается переменной int h. При помощи второго цикла for складываются значения всех элементов массива int arr[] с номерами меньше значения переменной int h. Полученная сумма присваивается переменной int a, значение которой возвращается функции int main(). Разработанный программный код см. в приложении А. Тестирование. Результаты тестирования представлены в табл. 1. Таблица 1 – Результаты тестирования № п/п Входные данные 1. Выходные данные 0 6 92 70 59 63 90 38 57 29 93 Комментарии Верно 0 47 81 5 48 93 29 69 93 56 23 59 25 33 91 77 71 34 85 62 41 84 66 8 41 25 89 13 68 2. 1 69 45 87 63 12 25 48 75 11 Верно 69 36 12 14 11 15 28 59 3. 2 54 36 15 89 58 64 57 55 80 Верно 4 88 45 42 9 56 24 47 4. 3 26 15 48 79 56 84 8 56 44 308 Верно 57 8 56 32 14 8 75 Выводы. Были изучены основные управляющие конструкции языка C (условия, циклы, условия, циклы, оператор switch), массивы и функции. Разработана программа, выполняющая считывание с клавиатуры исходных данных и команды пользователя. Для обработки команд пользователя использовался условный оператор switch. Для выявления неправильного кода операции использовалась ветка default. Все операции были вынесены в отдельные функции. Во избежание повторений кода, внутри функций int get_diff(int i, int arr[]) и int get_sum(int i, int arr[]) вызывались функции int get_max(int i, int arr[]) и int get_min(int i, int arr[]). 5