Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 2
Регистрация: 13.12.2015
Сообщений: 261
1

Псевдографика в консоли

10.04.2017, 09:58. Показов 5850. Ответов 3

по заданию нужно вывести имя файла с размером в рамке, но файл имеет не всегда одинаковый размер как и имя, как лучше всего будет это сделать, мне ничего лучше поиска наибольшей длины и последующего сопоставления с длиной размера не приходит
сама программа без рамок
Кликните здесь для просмотра всего текста
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
static void Main(string[] args)
        {
            
            string path = @"C:\Users\Augustxeno\Desktop\code pr\технологии программирования\лабораторные\прочие каталоги\лабораторная 4\поляков";
            DirectoryInfo dir = new DirectoryInfo(path);
            if (!dir.Exists)
            dir.Create();
 
            DirectoryInfo textFolder = dir.CreateSubdirectory("Текстовые файлы");
            DirectoryInfo pictureFolder = dir.CreateSubdirectory("Картинки");
 
            Regex regDig = new Regex(@"\d+");
            Regex regLat = new Regex(@"[a-zA-Z]+");
            var files = dir.EnumerateFiles("*.txt").Where(x => x.Name.Length == 6).Where(x => regDig.IsMatch(x.Name) && regLat.IsMatch(x.Name));
            foreach (var file in files)
                File.Move(file.FullName, Path.Combine(textFolder.ToString(), Path.GetFileName(file.ToString())));
 
            FileInfo[] pictureArray = dir.GetFiles("*.jpg");
            foreach (FileInfo file in pictureArray)
                if (!file.Exists)
                file.CopyTo(Path.Combine(pictureFolder.ToString(),Path.GetFileName(file.ToString())));
 
            for (int i=0;i<pictureArray.Length;i++)
                for (int j=i+1;j<pictureArray.Length;j++)
                    if (pictureArray[i].Length>pictureArray[j].Length)
                    {
                        FileInfo buf = pictureArray[j];
                        pictureArray[j] = pictureArray[i];
                        pictureArray[i] = buf;
                    }
 
            
            foreach (FileInfo file in pictureArray)
            {
                Console.WriteLine("{0} {1}", file.Name, file.Length);
            }
 
        }

создавать переменную равную коду из юникода с последующим выводом на экран тоже не вариант?
https://unicode-table.com/ru/#box-drawing
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Миниатюры
Псевдографика в консоли   Псевдографика в консоли  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2017, 09:58
Ответы с готовыми решениями:

Псевдографика в консоли
Доброе время суток! Ставил значит на днях Boost, через mac port и увидел очень занятную...

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

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

Псевдографика
Можно ли сделать так, чтобы процедура clrscr ни при каком условии не удаляла некоторые символы?...

3
Администратор
Эксперт .NET
13781 / 11168 / 4557
Регистрация: 17.03.2014
Сообщений: 22,527
Записей в блоге: 1
10.04.2017, 10:12 2
Цитата Сообщение от Reska Посмотреть сообщение
мне ничего лучше поиска наибольшей длины и последующего сопоставления с длиной размера не приходит
Раз длина заранее неизвестна, то это единственный вариант.

Цитата Сообщение от Reska Посмотреть сообщение
создавать переменную равную коду из юникода с последующим выводом на экран тоже не вариант?
Очень даже вариант.
0
595 / 479 / 185
Регистрация: 19.04.2016
Сообщений: 1,882
10.04.2017, 10:19 3
Reska, я смотрю там есть Linq, тогда что мешает сделать так:
C#
1
var maxLength = pictureArray.Max(f => f.ToString().Length);
Или реализовать метод, для подсчета длины чисел, если ToString() не подойдет(но всё же, если в итоге ToString произойдет, а длинны не совпадут, числа и стоки...).
Далее использовать PadLeft/PadRight. Можно просто попробовать через \t...
C#
1
Console.WriteLine(new string('_', 10));
Добавлено через 5 минут
Reska, т.к., всё же ToString() -- это не верный подход, то надо работать с числами. и в дальнейшем использовать StringBuilder
C#
1
2
3
            StringBuilder sb = new StringBuilder();
            // -=-
            Console.WriteLine(Convert.ToString(sb, CultureInfo.InvariantCulture));
0
0 / 0 / 2
Регистрация: 13.12.2015
Сообщений: 261
10.04.2017, 10:27  [ТС] 4
Цитата Сообщение от EveKS Посмотреть сообщение
var maxLength = pictureArray.Max(f => f.ToString().Length);
вот бы еще так с размером, а это еще один массив
довольно прилично времени занимает поиск символов
C#
1
2
3
4
            char horizontalBorder = '\u2500';
            char verticalBorder = '\u2502';
            char upAndLeftBorder = '\u2518';
            char upAndRightBroder = '\u2514';
может есть библиотека для этого дела в которой все уже готово может быть?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2017, 10:27

Псевдографика
Как написать слово &quot;Hello&quot; в консоли?

Псевдографика
Нужно создать таблицу размерности n*m с помощью псевдографики. Помогите пожалуйста

Псевдографика
Мне нужно консольное псевдографическое приложение. Функции вроде printf и std::cout выводят...

Псевдографика
Тема для рассуждений. Можно ли вывести на экран, скажем так клетку (3х3) начерченную в файле: ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.