Показать полную графическую версию : [решено] сортировка и разделение по ФИО
firemage
22-10-2018, 18:49
Необходимо создать файл bat который сортирует имена, фамилии и отчества и разделяет их в три отдельных текстовых файла
firemage
22-10-2018, 18:50
(они даны в отдельном текстовом файле)
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла (в один имена во второй фамилии в третий отчества? или как?)
firemage
22-10-2018, 19:17
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла »
лучше и то и другое и заранее спасибо
лучше и то и другое … »
«…и можно без хлеба!»™ :).
firemage, Вам говорят, чтобы Вы упаковали Ваш файл в архив, каковой прикрепили бы к сообщению.
firemage
22-10-2018, 22:26
Iska, держите, но тут это роли не играет, можно любые фио брать
firemage,
невозможно открыть архив.
например вот структура в файле "file.txt"
N=Иванов;SN=Иван;P=Иванович
N=Петров;SN=Петр Константин;P=Захарович
N=Луговой-Дуров;SN=Всеволод;P=Кириллович
а вот разделение:
@echo off
<file.txt (for /f "tokens=1-3 delims=;" %%a in ('more') do @set "%%a"& set "%%b"& set "%%c"& call :#)
pause& exit
:#
echo %N% %SN% %P%
exit /b
отправить каждую переменную в свой файл труда, соответственно, не составит.
firemage
22-10-2018, 22:54
alpap, Iska, Elven, держите тогда не архивом
firemage,
я ждал чего-то подобного, но как быть с двойными фамилиями, но хуже того двойными именами?
но интереснее всего то, что:
ну вот раскидали мы имена, фамилии и отчества по отдельным файлам без всякой привязки и что получилось? Рандомный набор имен, фамилий и отчеств в разных файлах, для чего это все, смысл в чем? Что вы хотели этим добиться? Какова глобальная задача?
firemage, невозможно открыть архив. »
Я — открыл.
но тут это роли не играет, можно любые фио брать »
Роль играют — кодировка, наличие/отсутствие BOM, тип концов строк. В случае Вашего файла это — 65001/UTF-8 с BOM и стандартные 0x0D, 0x0A в качестве концов строк. А также внутренняя структура содержимого, в Вашем случае в частности — непонятные местами появляющиеся пробелы в конце некоторых строк. Откуда они?
сортирует имена, фамилии и отчества и разделяет их в три отдельных текстовых файла »
Мы сначала сортируем, а затем разделяем или же сначала разделяем, а потом сортируем каждый из трёх результирующих файлов отдельно?
firemage
23-10-2018, 08:27
Iska, первое
alpap, двойные фамилии обычно пишутся "фамилия-фамилия"
firemage
23-10-2018, 12:49
Elven, как хотя б просто разделить по фамилиям именам и отчествам (т.е. по 1,2 и 3 слову)
разделить »
если правильно задать, легко и разделить. В моем примере задано было через ; соответственно так и делилось: for /f "tokens=1-3 delims=;"
но все-таки хотелось бы понять смысл того что в итоге. Я понимаю еще привязать к какому-то столбцу, телефонов и т.д., например и построчно раскидывать:
файл1: имя=телефон
файл2: фамилия=адрес
файл3: отчество=email
а какой смысл просто набор имен, например?
firemage,
Если не секрет... Вам, чуть выше задали вопрос: а зачем эти наборы имен, отчеств и фамилий в отдельных файлах? Они ведь никак не будут связаны между собой... в чем смысл?
firemage
23-10-2018, 16:40
YuS_2, alpap, если не секрет, то это такая лаба извращённая
Если это лаба, значит поиск решения на форумах - это попытка наступить себе на галстук, а так же предложение форумчанам оказать Вам медвежью услугу. Т.к. это лаба, условия ее маловероятно, что будут слишком замороченными, следовательно решение здесь находится через один for. Мне понадобилось 5 строчек, не исключаю, что коллеги обошлись бы даже меньшим количеством, однако решение приводить не очень хочется по причинам указанным в самом начале поста.
это такая лаба »
задание, еще поверю, но не лаба. В любом случае она будет иметь осмысленное завершенное решение и создается для обучения и понимания процессов, а не забивание гвоздей микроскопом.
alpap, да ладно? а использовать рекурсию для нахождения n-го члена ряда Фибоначчи не забивание указанной оптикой указанных крепежных изделий? А строку переворачивать до задомнапередного состояния через цикл? Лабы могут быть и куда более отбитыми чем сортировка имен фамилий и отчеств по разным файлам.
то это такая лаба извращённая »
firemage, а откуда взялся такой оригинальный fio.txt, в 65001/UTF-8 с BOM?! Даже в дурных лабораторках не должно быть таких исходных файлов.
нахождения n-го члена ряда Фибоначчи »
а чего страшного-то? ну микроскоп, ну гвоздь... берем и забиваем. Ну, нет более подходящего инструмента под рукой - а что делать? :)
Кстати о числах Фибоначчи... иногда попадаются высказывания о медленных массивах в powershell, вот и проверим на этих числах, с секундомером в руках:
$watch = [diagnostics.stopwatch]::startnew()
$watch.start() #Запуск таймера
# запуск: .\script.ps1 n
#где n - n-ый член ряда Фибоначчи
# при n = 250000 - TotalSeconds : 18,4659158
# при n = 275000 - TotalSeconds : 60,6238501
# не рекомендую использовать бОльшие числа, ибо легко поймать переполнение с зависанием
$k = $args[0]
if ($k -lt 2){write-host Должно быть выполнено условие n ≥ 2;sleep 3;break}
$arr = new-object 'bigint[]' ($k+1)
for ($i=0;$i -le $k;$i++){
if ($i -lt 2){$arr[$i] = $i} else {
$arr[$i]=$arr[$i-1]+$arr[$i-2]
}
}
write-host " F₈ = " $arr[8]"`n"`
"F₉ = " $arr[9]"`n"`
"F₁₀ = " $arr[10]"`n"`
"F₁₈ = " $arr[18]"`n"`
"F₁₉ = " $arr[19]"`n"`
"F₂₀ = " $arr[20]"`n"`
"F₂₉₈ = " $arr[298]"`n"`
"F₂₉₉ = " $arr[299]"`n"`
"F₃₀₀ = " $arr[300]"`n"`
"Fn = " $arr[$k]
$watch.stop() #Остановка таймера
$watch.elapsed >startstop.txt #Время выполнения
имхо, вполне приемлемая скорость заполнения массива рядом чисел Фибоначчи... нет? :)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.