ЛР2-4. Перенаправление потоков вводавывода
Скачать 244.44 Kb.
|
МИНИCTEPCTBO НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное автономное образовательное учреждение высшего образования «СЕВЕРО-КАВКАЗСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Институт цифрового развития Кафедра информационных систем и технологий Отчет по лабораторной работе № 4 Тема: ПЕРЕНАПРАВЛЕНИЕ ПОТОКОВ ВВОДА-ВЫВОДА Дисциплина: «Технологии программирования»
Ставрополь 2022 Цель работы: Цель лабораторной работы: изучить типы и принципы работы с одномерными массивами. Задачи лабораторной работы: – научиться инициализировать одномерные массивы; – научиться реализовывать простейшие алгоритмы на одномерных массивах; – научиться вычислять простейшие агрегированные показатели на одномерных массивах. Теоретическая часть Для работы с набором значений одного типа используются массивы. Массив – это структура данных, содержащая множество элементов одного и того же типа. Массив определяется типом элементов, содержащимся в нем, за которым следуют квадратные скобки и имя переменной. Примеры объявления массивов: При объявлении массива не указывается его размер. Для выделения памяти для элементов массива необходимо использовать следующий синтаксис (для массивов, объявленных в предыдущем примере): Объявить и инициализировать массив можно в одной строке: При инициализации можно также присвоить значения элементам массива (все три способа присвоения элементов массива эквивалентны): После того как массив объявлен и инициализирован, можно производить доступ к элементам массива для чтения и записи через индексатор. Индексатор – это целочисленный номер элемента массива. Индексатор начинается с 0 (для первого элемента массива) и закачивается числом равным количеству элементов в массиве минус 1. Например, определим массив и попробуем обратиться к его элементам: Часто (когда размер массива большой) используют циклы для обращения к элементам массива: Для больших массивов есть смысл сгенерировать значения элементов массива случайным образом (используя генератор случайных чисел): Индивидуальное задание: (Вариант 3) Задача: Во входном файле содержится две строки: первая содержит одно целое число N (количество чисел во второй строке), вторая строка содержит N вещественных чисел (каждое от 0 до 105). В результате работы программы должен быть сформирован выходной файл, который содержит следующие значения: 1) произведение чисел, меньших 50 (если таких чисел нет, то выводится 0); 2) все числа, большие среднего арифметического через пробел Код программы: 1) using System; using System.IO; namespace ConsoleApp9 { class Program { static void Main(string[] args) { int N; String FileName; Console.Write("Введите N"); N = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите имя файла (без пробела) > "); FileName = Console.ReadLine(); FileName += ".txt"; TextWriter save_out = Console.Out; var new_out = new StreamWriter(FileName); Console.SetOut(new_out); Console.WriteLine(N); Random r = new Random(DateTime.Now.Millisecond); int x = 0; for (int i = 0; i < N; i++) { x = r.Next(1000); Console.Write(x + ""); } Console.SetOut(save_out); new_out.Close(); Console.WriteLine("File" + FileName + "был создан!!!"); Console.ReadKey(); } } } Рисунок 1 – Программа для генерации исходных файлов. Рисунок 2 – Генерация исходных файлов. w2) using System; using System.IO; namespace ConsoleApp9 { class Program { static void Main(string[] args) { TextWriter save_out = Console.Out; TextReader save_in = Console.In; var new_out = new StreamWriter(@"output.txt"); var new_in = new StreamReader(@"input2.txt"); Console.SetOut(new_out); Console.SetIn(new_in); int N = Convert.ToInt32(Console.ReadLine()); String str_all = Console.ReadLine(); string[] str_elem = str_all.Split(' '); int[] mas = new int[N]; for (int i = 0; i < N; i++) { mas[i] = Convert.ToInt32(str_elem[i]); } int s = 0; float sa = 0; for (int i = 0; i < N; i++) { s += mas[i]; sa = 1.0f * s / N; } Console.WriteLine(string.Format("{0:0.000000}", sa)); for (int i = 0; i < N; i++) { if (mas[i] <= sa) Console.Write(mas[i] + ""); Console.SetOut(save_out); new_out.Close(); Console.SetIn(save_in); new_in.Close(); } } } } |