PDA

Показать полную графическую версию : [решено] сортировка и разделение по ФИО


Страниц : [1] 2

firemage
22-10-2018, 18:49
Необходимо создать файл bat который сортирует имена, фамилии и отчества и разделяет их в три отдельных текстовых файла

firemage
22-10-2018, 18:50
(они даны в отдельном текстовом файле)

Elven
22-10-2018, 19:14
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла (в один имена во второй фамилии в третий отчества? или как?)

firemage
22-10-2018, 19:17
нужна структура файла (а лучше он сам или хотя бы кусок) и принцип разделения на эти три файла »
лучше и то и другое и заранее спасибо

Iska
22-10-2018, 22:21
лучше и то и другое … »
«…и можно без хлеба!»™ :).

firemage, Вам говорят, чтобы Вы упаковали Ваш файл в архив, каковой прикрепили бы к сообщению.

firemage
22-10-2018, 22:26
Iska, держите, но тут это роли не играет, можно любые фио брать

alpap
22-10-2018, 22:52
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, держите тогда не архивом

alpap
22-10-2018, 23:01
firemage,
я ждал чего-то подобного, но как быть с двойными фамилиями, но хуже того двойными именами?
но интереснее всего то, что:
ну вот раскидали мы имена, фамилии и отчества по отдельным файлам без всякой привязки и что получилось? Рандомный набор имен, фамилий и отчеств в разных файлах, для чего это все, смысл в чем? Что вы хотели этим добиться? Какова глобальная задача?

Iska
22-10-2018, 23:29
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 слову)

alpap
23-10-2018, 13:12
разделить »
если правильно задать, легко и разделить. В моем примере задано было через ; соответственно так и делилось: for /f "tokens=1-3 delims=;"
но все-таки хотелось бы понять смысл того что в итоге. Я понимаю еще привязать к какому-то столбцу, телефонов и т.д., например и построчно раскидывать:
файл1: имя=телефон
файл2: фамилия=адрес
файл3: отчество=email

а какой смысл просто набор имен, например?

YuS_2
23-10-2018, 14:32
firemage,
Если не секрет... Вам, чуть выше задали вопрос: а зачем эти наборы имен, отчеств и фамилий в отдельных файлах? Они ведь никак не будут связаны между собой... в чем смысл?

firemage
23-10-2018, 16:40
YuS_2, alpap, если не секрет, то это такая лаба извращённая

Elven
23-10-2018, 17:13
Если это лаба, значит поиск решения на форумах - это попытка наступить себе на галстук, а так же предложение форумчанам оказать Вам медвежью услугу. Т.к. это лаба, условия ее маловероятно, что будут слишком замороченными, следовательно решение здесь находится через один for. Мне понадобилось 5 строчек, не исключаю, что коллеги обошлись бы даже меньшим количеством, однако решение приводить не очень хочется по причинам указанным в самом начале поста.

alpap
23-10-2018, 19:09
это такая лаба »
задание, еще поверю, но не лаба. В любом случае она будет иметь осмысленное завершенное решение и создается для обучения и понимания процессов, а не забивание гвоздей микроскопом.

Elven
23-10-2018, 20:27
alpap, да ладно? а использовать рекурсию для нахождения n-го члена ряда Фибоначчи не забивание указанной оптикой указанных крепежных изделий? А строку переворачивать до задомнапередного состояния через цикл? Лабы могут быть и куда более отбитыми чем сортировка имен фамилий и отчеств по разным файлам.

Iska
23-10-2018, 22:21
то это такая лаба извращённая »
firemage, а откуда взялся такой оригинальный fio.txt, в 65001/UTF-8 с BOM?! Даже в дурных лабораторках не должно быть таких исходных файлов.

YuS_2
23-10-2018, 22:26
нахождения 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