Как писать входные данные и выходные в программе

Презентация на тему: » Работа с входными и выходными файлами Зачем это нужно и как это сделать Подготовила Пресняк Т.В.» — Транскрипт:

1 Работа с входными и выходными файлами Зачем это нужно и как это сделать Подготовила Пресняк Т.В.

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

А если их очень много? В языке Паскаль есть возможность записать их на диск. Для этого создаются входные (содержащие исходные данные) и выходные (содержащие результат выполнения программы) файлы. В языке Паскаль файл представляет собой последовательность элементов одного типа.

3 Работа с входным файлом На диске «С» сохраняем файл, созданный в «Блокноте» с именем «input», в котором записываем исходные данные для программы Для установления связи между входным файлом и программой имеется стандартная процедура: Assign(input, c:input.txt); — где input – имя входного файла, а c:input.txt – путь к данному файлу Чтение исходных данных из файла: Reset(input);- открываем файл для чтения Read(a,b); — читаем данные файла в программу (a и b — переменные) Закрытие входного файла: Close(input); Между операторами Reset, Read, Close могут быть другие операторы в программе

Выпуск 104. ReST — входные и выходные параметры.

4 Запись результата в выходной файл Под записью файла понимается вывод результатов программы из оперативной памяти на диск, т.е. создание нового файла на внешнем устройстве. Для записи файла в программе необходимо выполнить следующие действия: Assign(output,C:output); Rewrite(output.txt); — открыть файл для записи Writeln(s); — записать данные в файл, при этом запись идет поэлементно Close(output); — закрыть файл для записи

5 Пример программы 1 Задача : Д аны т ри ц елых ч исла. Н айдите среднее и з н их п о с воему з начению

6 Решение: Program chislo; Var a,b,c,sr: integer; Begin Assign(input,c:input.txt); Reset(input); Read(a,b,c); Close(input); If (a

7 Пример программы 2 Задача : Дано N- е количество пар двузначных чисел. Найти среди них такие пары чисел, сумма которых равна 100.

8 Пример программы 2 Решение : Program para_chisel; Var N,a,b,S: integer; Begin Assign(input,c:input.txt); Assign(output,c:output.txt); Reset(input); Rewrite(output); Read(N); For i:=1 to N do Begin Read(a,b); S:=a+b; If S=100 then writeln(a:3,b:3); end; Close(input); Close(output); End.

Источник: www.myshared.ru

C# Приложение с входными и выходными параметрами [дубликат]

В других ответах уже написали про параметры командной строки и код возврата.

Но, как мне кажется, вам больше подойдут стандартные потоки ввода-вывода и их перенаправление.

Выпуск 7. Закрепляем описание операций — входные и выходные данные.

Например, напишем такую простейшую консольную программку:

using System; class Program < static void Main() < // Читаем из стандартного потока ввода string line = Console.ReadLine(); // Обрабатываем введенное значение line = line.ToUpper(); // Пишем в стандартный поток вывода Console.WriteLine(line); >>

Читайте также:
Программа которая загружает процессор на 100

Кстати, можно явно писать Console.In.ReadLine() и Console.Out.WriteLine() , указывая потоки ввода и вывода.

Если её запустить, то нужно будет ввести строку в консоли. Результат тоже появится в консольном окне.

Теперь можно использовать перенаправление потоков. Например, подадим на вход нашей программе текстовый файл, из которого она прочтёт значение (одну первую строку). Вывод перенаправим в другой текстовый файл.

app < in.txt >out.txt

Где app.exe — имя нашей программы. in.txt — входной файл. out.txt — выходной файл.

Про конвейер и поток ошибок почитаете сами.

Отслеживать
ответ дан 9 ноя 2016 в 10:57
Alexander Petrov Alexander Petrov
28.8k 5 5 золотых знаков 28 28 серебряных знаков 55 55 бронзовых знаков

Отвечаю на вопрос, как его понял я 🙂

Вероятно, вы хотите, чтобы ваше консольное приложение запускалось с некими параметрами ( ping localhost , где localhost — параметр)

Создайте консольный проект, посмотрите на заголовок главного метода:

static void Main(string[] args)

Массив args — это и есть входные параметры.

Если сделать так:

namespace ConsoleApplication1 < class Program < static void Main(string[] args) < if (args[0] == «print») Console.WriteLine(args[1]); >> >

А потом скомпилировать, и в командной строке набрать ConsoleApplication1 print hello — в консоль выведется hello

Отслеживать
ответ дан 9 ноя 2016 в 4:03
1,287 9 9 серебряных знаков 21 21 бронзовый знак

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

После того, как вы получили нужные параметры, в вашем примере — имя сайта, ваше приложение выполняет необходимые действия и завершает работу. При завершении работы можно указать целочисленный ( int ) код возврата, он же ExitCode, который может быть обработан в вызывающем приложении. Т.е. true или false как вы хотите, возвратить не получится, а вот 0 или 1 (или еще какое число типа int ) — запросто.

Возвращать можно переопределив метод Main() в консольном приложении, заменив void на int , например так:

static int Main(string[] args) < int i = 0; Console.WriteLine(«Hello! I’ll try to write command-line arguments.»); foreach (var parameter in args) < Console.WriteLine(«Parameter » + i.ToString() + » is: «+args[i]); >Console.WriteLine(«Press ENTER to exit»); Console.ReadLine(); return args.Count(); >

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

Кроме этого, получить тот же результат (завершение приложения с кодом возврата) можно при помощи метода Environment.Exit(code) (MSDN), которое позволит завершить работу не только по окончанию метода Main() , но и из другого места в программе. Можете попробовать вместо return args.Count(); написать так: Environment.Exit(args.Count()); (только верните назад void вместо int ).

Немного модифицированным и более гибким вариантом для решения вашей задачи будет использовать некий буфер (или буферы) для обмена данными, например, файлы: запускаем программу и в качестве аргумента командной строки передаете ей имя файла с какими-то входными данными, и имя файла, куда будет выведен результат. Программа обрабатывает входные данные, с их учётом выполняет какие-то действия, а результат записывает в нужном виде в выходной файл, который потом можно обработать как вам захочется.

Читайте также:
F lux похожие программы

Для работы с файлами в арсенале C# есть разные инструменты, и рассказывать о всех возможностях как записать/прочитать файл слишком долго и много, но почитать об этом можно, например, тут, или тут, или здесь. Или погуглить и найти еще источники )

Источник: ru.stackoverflow.com

1.2. Входные и выходные данные

Все входные данные для программ должны находиться в текстовых файлах. Обычно файл с входными данными имеет имя «input.txt», а файл с выходными данными – «output.txt», но имена можно варьировать. Формат таких файлов для каждой практической работы строго оговорен (см. п. 2.1 – 2.9).

1.2.1. Формат чисел и строк

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

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

fscanf(f, format, // C

При этом файловая переменная f должна быть связана с входным файлом, а указатель в файле должен находиться перед считываемым числом. В языке Pascal эта связь создается последовательным вызовом функций Assign и Reset, а в C – fopen (библиотека stdio.h).

В языке C++ переменная f должна являться экземпляром класса ifstream (библиотека fstream.h) и связывается с файлом либо при вызове конструктора класса, либо при помощи метода open. Тип переменной x должен соответствовать типу считываемого числа. При этом все разделители (пробелы, табуляции, переносы строки) пропускаются автоматически.

В языке C тип числа задается явным способом – при помощи текстового параметра format. Для целого числа это обычно «%d» (int) или «%ld» (long), для вещественного числа – «%f» (float) или «%lf» (double). Переменная в этом случае передается в функцию по адресу. Как именно формируется адрес – не важно. Например, адрес ячейки с номером i в массиве-векторе a можно записать как a + i, что эквивалентно a[0] эквивалентно просто a).

Для записи чисел в текстовый файл используются стандартные процедуры или операторы вывода:

fprintf(f, format, x); // C

Файловая переменная f должна быть связана с выходным файлом. В языке Pascal эта связь создается последовательным вызовом функций Assign и Rewrite, а в C – также fopen. В языке C++ переменная f должна являться экземпляром класса ofstream (библиотека fstream.h) и связывается с файлом либо при вызове конструктора класса, либо при помощи метода open. При этом вывод можно форматировать.

Так, в языке Pascal для форматирования чисел при выводе используется запись x:n, где n – количество позиций для вывода числа. Лишние позиции (не занятые цифрами числа) заполняются пробелами. Это удобно использовать при выводе матриц. Для вещественных чисел можно задавать дополнительный параметр форматирования: x:n:m, где m – количество десятичных знаков после запятой.

Читайте также:
Что такое программа dvd maker

Функции семейства printf языка C обладают более гибкими возможностями форматирования вывода. Во-первых, поддерживается множество форматов вещественных чисел:

  • обычный (%f);
  • экспоненциальный (%e) – числа выводятся всегда с экспонентой;
  • оптимальный (%g) – автоматически подбирает максимально удобный вид числа.

Во-вторых, позволяют задавать ширину поля – %nz, %n.mz (n и m имеют тот же смысл, что и в Pascal, z – требуемый формат). Если использовать запись %0nz или %0n.mz, то неиспользуемые позиции слева заполнятся нулями. Если использовать знак «минус» (%–nz или %–n.mz), то выравнивание происходит не по правой, а по левой границе поля.

В языке C++ существуют процедуры для форматирования вывода в поток (например, setw, ios::flags, ios::setf, ios::unsetf, ios::width, ios::fill, ios::precision). Функция setw определена в библиотеке iomanip.h, а класс ios – в библиотеке iostream.h. Все классы потокового ввода-вывода являются его наследниками. В случае необходимости, можно также записать число в требуемом формате в строку процедурой sprintf, а затем уже получившуюся строку подать на выход.

Похожим образом обстоит дело и со строками. При чтении строк посредством функции fscanf нужно только помнить, что строковая переменная сама по себе является указателем на область памяти, в которой расположены символы строки, поэтому применение операции извлечения адреса не требуется. Поэтому и объявляться строка должна так же, как массив-вектор. Например:

char s2[] = “qwerty”;

В первом случае создается строка на 20 символов, во втором – требуемое количество символов подсчитывается компилятором. В данном случае это 7 (добавляется символ конца строки). Эту запись можно представить в том виде, в котором инициализируются числовые массивы:

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

s3 = new char [20];

Квадратные скобки явно указывают компилятору на то, что удаляется именно массив. В четвертом случае память не выделена, поэтому приведенная запись ошибочна. Происходит попытка занести данные по неинициированному указателю.

Единственной особенностью является то, что Pascal считает разделителем строк символ перевода строки, а C – символ пробела. Поэтому нужно грамотно использовать функции read и readln в языке Pascal, чтобы не считать пустую строку (если указатель в файле находился в конце предыдущей строки). А в C использовать ограничители ввода, если строка может содержать пробелы. Например, формат %[^n]s в Borland C++ позволит прочитать строку, остановившись на символе конца строки (n). Другие компиляторы могут иметь свои способы ограничения ввода.

При выводе строк действуют практически те же правила форматирования, что и при выводе целых чисел. Т.е. используется запись write(f, s:n) в Pascal или формат %ns в C для вывода строки в поле фиксированной ширины. Кроме того, в C можно использовать формат %-ns, тогда строка выравнивается (по аналогии с выводом числа) по левому, а не правому краю поля.

Классы ввода-вывода языка C++ обладают всей функциональностью средств вывода данных языка C, только достигается это не определением формата, а, в основном, вызовом перечисленных выше методов класса ios.

Для более подробной информации смотрите справку.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru