Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2семестр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.33 Mб
Скачать

Внешние устройства

Программа использует данные, которые расположены на внешнем устройстве (диск, дискета, флеш-диск, CD-диск) или получает результаты, которые необходимо записать на внешнее устройство. Считывание (запись) выполняет из файла (в файл), который и будет содержать данные на внешних устройствах. Файл данных – это совокупность (последовательность) компонент, имеющая имя, расположенная на внешнем носителе. Файлы могут быть объединены в каталоги (директории, папки), также имеющие имя. Использование файлов данных позволяет хранить данные на внешнем носителе, обрабатывая при необходимости порциями, многократно использовать один и тот же набор данных, а также использовать результаты выполнения одной программы как входные данные при выполнении другой программы и т.п.

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

Потоки включают основные операции:

  1. чтение из потока – перенос информации из потока в оперативную память. Класс StreamReader предназначен для чтения из текстового файла;

  2. запись в поток – передача данных из памяти в поток. Класс SrteamWriter предназначен для записи в текстовый файл.

Стандартные потоки связаны с консолью и клавиатурой. Для вывода данных в стандартный поток вывода и для ввода из стандартного потока ввода используются методы класса Console:

Console.ReadLine, Console.Write и Console.WriteLine.

Для ввода из файла (созданного заранее в текстовом редакторе) необходимо вначале открыть поток StreamReader, связав его с файлом. Открытие потока и его привязка к файлу осуществляются с помощью конструктора:

StreamReader sr = new StreamReader(path);

где sr - экземпляр класса StreamReader, а аргумент path передает строку, содержащую полный путь к файлу, который показывает месторасположение данных на внешнем носителе. Далее строки из файла по очереди считываются в переменную line, из которой далее извлекаются отдельные значения.

После окончания работы с объявленным потоком, его следует закрыть методом Close: sr.Close();

При выводе в файл необходимо открыть поток класса SrteamWriter, задав имя потока и связав его с файлом, предназначенным для размещения выводимых результатов, вывести в этот поток (т.е. указанный файл) необходимые результаты и закрыть поток методом Close(). Открытие потока и его привязка к файлу осуществляются с помощью конструктора:

SrteamWriter sw = new SrteamWriter(path);

Пример 1. Результаты соревнований по прыжкам в длину определяется по лучшей попытке из 3-х попыток. Информация о результатах соревнований включает:

  1. фамилию и инициалы спортсмена,

  2. результаты трех попыток.

Результаты записаны в виде текстового файла на «флешке» "F:\\Prshk.txt":

Иванченко_Ф.И. 5,8 6,0 5,7 0

Соколов_А.В. 6,2 5,8 6,8 0

Рыбаков_С.П. 5,9 6,4 7,3 0

Улыбин_Н.В. 5,6 5,3 5,2 0

Цыплаков_Р.Д. 6,4 6,8 6,2 0

Игнатович_Т.О. 5,9 6,5 6,4 0

Андреев_Н.Р. 7,0 7,2 6,8 0

Яковлев_М.А. 6,9 7,1 6,6 0

Шарипов_В.Я. 5,8 5,4 5,6 0

Задорнов_Л.Д. 6,0 6,1 6,0 0

Селезнев_О.Г. 5,3 5,8 5,4 0

Коробков_Н.Н. 6,5 6,8 6,4 0

Васильев_К.Ф. 5,9 6,7 6,4 0

Цирульников_Б.Т. 5,9 6,3 6,6 0

Зарипов_М.М 6,4 6,8 6,7 0

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

Программа на алгоритмическом языке C#:

using System;

using System.Collections.Generic;

using System.Linq;

using System.IO;

using System.Text;

namespace ConsoleApplication1

{

struct Prsh

{

public string Fam; // Фамилия спортсмена

public double r1; // Результат 1-ой попытки

public double r2; // Результат 2-ой попытки

public double r3; // Результат 3-ой попытки

public double res; // Лучший результат, //вычисляется в программе

}

class Program

{

static void Main(string[] args)

{

Prsh[] Dln = new Prsh[25];

Prsh temp;

int i, j, n, k;

double max;

string path = "F:\\Prshk.txt";

StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));

string line;

i = 0;

// Считываем из файла

while ((line = sr.ReadLine()) != null)

{

string[] str = line.Split(' ');

Dln[i].Fam = str[0];

Dln[i].r1 = double.Parse(str[1]);

Dln[i].r2 = double.Parse(str[2]);

Dln[i].r3 = double.Parse(str[3]);

// Вычисление лучшей попытки

Dln[i].res = Math.Max(Dln[i].r1, Math.Max(Dln[i].r2, Dln[i].r3));

Console.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);

i++;

}

n = i;

sr.Close();

// Расположение спортсменов в порядке занятых мест

for (i = 0; i < n-1; i++)

{

max = Dln[i].res; k = i;

for (j = i + 1; j < n; j++)

if (Dln[j].res > max)

{

max = Dln[j].res;

k = j;

}

temp = Dln[k];

Dln[k] = Dln[i];

Dln[i] = temp;

}

Console.WriteLine(" Фамилия Попытки Лучшая попытка");

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

Console.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);

string path1 = "F:\\Prshk1.txt";

StreamWriter sw = new StreamWriter(path1);

// Запись в новый файл "F:\\Prshk1.txt"

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

sw.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);

sw.Close();

}

}

}

Файл "F:\\Prshk1.txt", содержащий результаты спортсменов в порядке занятых //мест.

Рыбаков_С.П. 5,9 6,4 7,3 7,3

Андреев_Н.Р. 7,0 7,2 6,8 7,2

Яковлев_М.А. 6,9 7,1 6,6 7,1

Цыплаков_Р.Д. 6,4 6,8 6,2 6,8

Соколов_А.В. 6,2 5,8 6,8 6,8

Коробков_Н.Н. 6,5 6,8 6,4 6,8

Зарипов_М.М 6,4 6,8 6,7 6,8

Васильев_К.Ф. 5,9 6,7 6,4 6,7

Цирульников_Б.Т. 5,9 6,3 6,6 6,6

Игнатович_Т.О. 5,9 6,5 6,4 6,5

Задорнов_Л.Д. 6,0 6,1 6,0 6,1

Иванченко_Ф.И. 5,8 6,0 5,7 6,0

Селезнев_О.Г. 5,3 5,8 5,4 5,8

Шарипов_В.Я. 5,8 5,4 5,6 5,8

Улыбин_Н.В. 5,6 5,3 5,2 5,6

Пример 2. Расписание вылета самолетов из аэропорта заранее набрано в текстовом редакторе и в виде файла записано на «флешке»: “F:\\Rasp.txt”.

Расписание состоит из записей. Каждая запись состоит из следующих полей:

Номер

Рейса

Пункт

Назначения

Время

Отправления

Время

прибытия

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

using System;

using System.Collections.Generic;

using System.Linq;

using System.IO;

using System.Text;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string line;

int nomr;

string Punct, Psd;

double Votp;

double Vprb;

string path = "F:\\Rasp.txt";

StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));

Console.WriteLine(“ Введите заданный пункт назначения”);

Psd = Console.ReadLine();

while ((line = sr.ReadLine()) != null)

{

string[] spr = line.Split(' ');

nomr = int.Parse(spr[0]);

Punct = spr[1];

Votp = double.Parse(spr[2]);

Vprb = double.Parse(spr[3]);

if(Punct == Psd)

Console.WriteLine(" {0:d4} {1} {2:f4} {3:f4}", nomr, Punct, Votp, Vprb);

}

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]