Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16

Стандартные вход и выход в консольных приложениях

24.08.2021, 22:34. Показов 1627. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача должна выполняться консольным приложением, получающим данные со стандартного ввода и записывающим результат действия на стандартный вывод. Другими словами, приложение не должно отображать никаких дополнительных сообщений (как входных, так и выходных, по крайней мере, в версии Release) и должно работать из командной строки следующим образом:

z1.exe <test1.txt >res_test1.txt

Тут первый вопрос - как это делается? С помощью ресурс менеджера или что?

Программа должна быть написана с использованием методов объектно-ориентированного программирования. Окончательная программа должна называться в соответствии с префиксом задачи (Z1.exe, Z2.exe,...).

Задача

Дан прямоугольный треугольник с длиной катетов N. Вычислите максимальное количество квадратов со стороной длины M, которые целыми помещаются в этом треугольнике. N и M целые числа.

Вход: одна строка текста, содержащая два числа, разделенных пробелом: N M.
Выход: одна строка текста, содержащая результирующее число.
Пример: для входа в виде 3 1 правильный результат - 3.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.08.2021, 22:34
Ответы с готовыми решениями:

Ошибка в консольных приложениях
Все привет Как получить последнюю ошибку в консоль. приложениях а то при ошибке оно сразу закрывается и выяснение причины ошибки...

Message в консольных приложениях
Вообще программа должна постоянна висеть в цикле. При изменение буфера(не работает) обмена должна начинаться некая его обработка(работает и...

Отоброжение в консольных приложениях
Как реализовать не добавление нового текста, а изменение стасого. Например проценты.

14
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
24.08.2021, 22:45
Цитата Сообщение от Dreikone1 Посмотреть сообщение
как это делается?
Запускаете из командной строки (cmd или PowerShell) как показано, а в коде используете методы класса Console для чтения и записи.
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 09:34  [ТС]
Меня интересует конкретно еще это строка с точки зрения позиции: z1.exe - название файла, ок.
<test1.txt - это файл чтения, а >res_test1.txt файл записи? Т.е. консоль сама ничего не выводит и пользователь тоже ничего вручную не вводит? Грубо говоря, создан файл test1.txt, из него уже берутся данные, а результат после запуска программы записывается в файл res_test1.txt?

Заранее спасибо!
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
25.08.2021, 10:06
Dreikone1, верно.
0
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 12:16  [ТС]
Спасибо, это пока понятно. Но как сделать динамически выбор файлов? Например, в папке у меня 3 файла - text1.txt, text2.txt, text3.txt. Как сделать так, чтобы когда в консоли вводишь z1.exe <test2.txt >res_test1.txt использовался именно text2.txt? Или любой другой файл, который создан позже (например, text54.txt)? Ведь в FileStream я уже прописываю конкретный файл txt.

Спасибо!
0
 Аватар для Andrey-MSK
3349 / 2235 / 388
Регистрация: 14.08.2018
Сообщений: 7,560
Записей в блоге: 4
25.08.2021, 12:48
Цитата Сообщение от Dreikone1 Посмотреть сообщение
использовался именно text2.txt
у Main есть аргументы, вот их и читайте
C#
1
2
static void Main(string[] args) // args - это именно они
{ }
1
 Аватар для volodin661
6793 / 2290 / 348
Регистрация: 10.12.2013
Сообщений: 7,907
25.08.2021, 13:03
Цитата Сообщение от Dreikone1 Посмотреть сообщение
Ведь в FileStream я уже прописываю конкретный файл tx
нет

см. выше:
Цитата Сообщение от OwenGlendower Посмотреть сообщение
а в коде используете методы класса Console для чтения и записи.
C#
1
2
TextReader instrm = new StreamReader(Console.OpenStandardInput());
TextWriter outstrm = new StreamWriter(Console.OpenStandardOutput());
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18298 / 14222 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
25.08.2021, 14:04
Цитата Сообщение от Dreikone1 Посмотреть сообщение
Но как сделать динамически выбор файлов?
В коде вам ничего особенного делать не нужно. Просто чиатайте из консоли (Console.ReadLine) и записывайте (Console.WriteLine). О перенаправлении ввода и вывода позаботится операционная система.
1
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 15:26  [ТС]
Мучался, мучался, но возможно не понял ваше предложение (либо не знаю, как его реализовать).
Пробовал использовать этот вариант - где все-таки указан начальный файл:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
         FileStream fileStream = new FileStream("test1.txt", FileMode.Open, FileAccess.Read);
         StreamReader read = new StreamReader(fileStream);
         string str;
         using(StreamWriter write = File.CreateText(writeFile))
         {
             while ((str = read.ReadLine()) != null)
             {
                 char[] arr = str.ToArray();
                 write.Write(arr[0]);
             }
         }
         read.Close();
         Console.ReadLine();


Но вторым вариантом пока что решил эту задачу в такой способ:

C#
1
2
3
4
5
6
7
8
9
10
string s;
            if (!Console.IsInputRedirected)
            {
                Console.WriteLine("This example requires that input be redirected from a file.");
                return;
            }
            do
            {
                s = Console.ReadLine();
            } while (s != null);

ВАЖНО! Имеется ввиду только решение вопроса с динамическим подключением информации из файла, а не решение самой задачи с треугольниками, там как раз ничего сложного.

Добавлено через 4 минуты
ВСЕМ БОЛЬШОЕ СПАСИБО! Лучший форум!

P.S. На другом форуме(не будем называть имен) меня просто послали
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.08.2021, 16:48
Цитата Сообщение от Dreikone1 Посмотреть сообщение
вторым вариантом пока что решил эту задачу в такой способ
Вы слишком мудрите, вам же выше несколько раз сказали: просто работайте с консолью как обычно, не надо ничего открывать и проверять.
Все перенаправление сделает оболочка.

C#
1
2
3
4
5
static void Main()
{
   string input = Console.ReadLine();
   Console.WriteLine("Your line was " + input);
}
Всё, больше от вас ничего не требуется — считывайте значения из консоли так, как если бы их вводил пользователь.
1
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 17:28  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Вы слишком мудрите, вам же выше несколько раз сказали: просто работайте с консолью как обычно, не надо ничего открывать и проверять.
Все перенаправление сделает оболочка.

C#
1
2
3
4
5
static void Main()
{
   string input = Console.ReadLine();
   Console.WriteLine("Your line was " + input);
}
Всё, больше от вас ничего не требуется — считывайте значения из консоли так, как если бы их вводил пользователь.
Возможно и перемудрил, либо о многом думаю. Типа, поймать все исключения, обработать null'ы и т.д. Возможно, это и не нужно. Благодарю.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.08.2021, 17:29
Dreikone1, я не про ловлю исключений, а про проверку на перенаправление ввода/вывода и про создание файлового потока.
Вам это не нужно.
1
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 17:55  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Dreikone1, я не про ловлю исключений, а про проверку на перенаправление ввода/вывода и про создание файлового потока.
Вам это не нужно.
Вот результат:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class Calculations
    {
        private string _input;
 
        public Calculations(string Input)
        {
                _input = Input;
        }
 
        private int maxSquare()
        {
            int[] arr = _input.Split(' ').Select(x => int.Parse(x)).ToArray();
            int sideT = arr[0];
            int sideS = arr[1];
 
            return (sideT / sideS - 1) * (sideT / sideS) / 2;
        }
 
        public void GetResult()
        {
            Console.WriteLine(maxSquare());
        }
    }
 
 
    class Program
    {
        static void Main(string[] args)
        {
            
            if (!Console.IsInputRedirected)
            {
                Console.WriteLine("This example requires that input be redirected from a file.");
                Console.WriteLine("Example: filename.exe <inp.txt >output.txt");
                return;
            }
            string input = Console.ReadLine();
                
            Calculations calculations = new Calculations(input);
            calculations.GetResult();
  
        }   
    }
Единственное - не разобрался пока как словить NullReferenceException, если текстовый файл изначально пустой...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
25.08.2021, 18:15
Цитата Сообщение от Dreikone1 Посмотреть сообщение
Вот результат
У вас вот эта часть:
Цитата Сообщение от Dreikone1 Посмотреть сообщение
C#
1
2
3
4
5
6
if (!Console.IsInputRedirected)
            {
                Console.WriteLine("This example requires that input be redirected from a file.");
                Console.WriteLine("Example: filename.exe <inp.txt >output.txt");
                return;
            }
Противоречит вот этому условию задачи:
Цитата Сообщение от Dreikone1 Посмотреть сообщение
приложение не должно отображать никаких дополнительных сообщений (как входных, так и выходных, по крайней мере, в версии Release)
Опять же, не мудрите, уберите эти проверки — они там ни к чему.

Цитата Сообщение от Dreikone1 Посмотреть сообщение
не разобрался пока как словить NullReferenceException, если текстовый файл изначально пустой
В условии задачи оговорено, что на вход подается одна строка, так что файл пустым не будет.
1
0 / 0 / 0
Регистрация: 14.06.2021
Сообщений: 16
25.08.2021, 19:03  [ТС]
Всех благодарю за помощь и неравнодушие!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2021, 19:03
Помогаю со студенческими работами здесь

Русский язык в консольных приложениях
Какая то фигня. Добился русского языка при вводе и выводе настройками компилятора {$mode objfpc}{$H+} {$codepage UTF8} при...

Русский язык в консольных приложениях
Консольное приложение под Windows 10 Добавляю в список зависимостей проекта LazUtils составляю тестовую программу program...

Русский язык в консольных приложениях!
Здравствуйте форумчане, у меня возник такой вопрос, вообщем когда я вывожу командой cout то русские символы переводятся в кракозяблики ))...

Графика в консольных приложениях WIN32
Всем привет))) Может тупой вопрос но оч надо узнать, как работать с простой графикой на новых версиях VC++. Я знаю что нужен graphic.h. Но...

Еще о консольных приложениях в VB - переназначение В/Выв
Кто может подсказать пример консольного приложения на VB, которое бы корректно обрабатывало переназначение ввода/вывода?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru