0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39

Написать скрипты на PowerShell (.ps1) 1.Нахожденияе числа Фибоначчи по номеру 2.Вывод измененных файлов каталога

17.01.2019, 02:04. Показов 6844. Ответов 31

Студворк — интернет-сервис помощи студентам
Здравствуйте, нужна помощь в написании двух скриптов на PowerShell (расширение .ps1)

1. Выведите число Фибоначчи по его номеру, вводимому с клавиатуры.
Первые два числа Фибоначчи равны 1; каждое следующее равно сумме
двух непосредственно предшествующих ему чисел Фибоначчи.

2. Выведите на экран названия файлов каталога, указанного в качестве
первого параметра командной строки, которые изменены в год, номер
которого указан во втором аргументе
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2019, 02:04
Ответы с готовыми решениями:

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов...
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Как в PS1 выводить количество файлов и подкаталогов домашнего каталога?
В задаче требуется изменить конфигурационный файл командного интерпретатора, чтобы формировалась динамически изменяющаяся и наследуемая в...

Скрипты Linux, удаление файлов из каталога, подсчет файлов в каталоге
С linux столкнулась не по своей воле, но приходиться изучать, я совсершенно еще зеленая в Линуксе, если есть проффесионалы, могли бы...

31
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 20:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KDE777 Посмотреть сообщение
Лёгким движением добавляем фен-шуй и снимаем ограничение Double
Ну, собственно, да, можно и так:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
$n = read-host "Введите номер числа (от 3 и более)"
if($n -le 2){
    write-host число должно быть положительным и больше 2 -for red
    sleep 3
    break
}
for ($b,$f1,$f2,$i=0,1,2,4; $i -le $n; $i++) { 
    [bigint]$b=$f1 
    [bigint]$f1=$f2
    [bigint]$f2=$b+$f1
} 
write-output "Fib($n)=$f2"
В моем примере, массив был нужен для получения любого номера (в разумных пределах) от 1 и до конечного, т.е. с помощью массива расчет делался один раз, вместо вычислений для каждого номера из произвольно выбранных нескольких номеров...
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 20:47
или без всякой функции:

PowerShell
1
2
3
4
$path = Read-Host 'enter Path'
$year = Read-Host 'enter Year'
 
cls; dir $path | ? {$_.LastWriteTime.Year -eq $year}
0
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39
17.01.2019, 20:53  [ТС]
Не беспокойтесь, у меня уже есть все, что нужно. Лучше скажите, вы не разбираетесь в bash скриптах?
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2019, 20:55
Если требуется выводить достаточно большие величины, пожалуй, стоит задуматься над использованием матриц.
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using namespace System.Windows.Media
 
Add-Type -AssemblyName WindowsBase
 
function fib {
  [OutputType([Double])]
  param(
    [Parameter(Mandatory)]
    [ValidateScript({$_ -ge 1})]
    [UInt16]$n # максимально допустимое значение 65535
  )
  
  process {
    $m1, $m2 = [Matrix]::new(1,0,0,1,0,0), [Matrix]::new(1,1,1,0,0,0)
    for ($i = 1; $i -lt $n; $i++) { $m1 *= $m2 }
    $m1.M11
  }
}
Цитата Сообщение от Rocksos
Лучше скажите, вы не разбираетесь в bash скриптах?
Должно быть сейчас последует просьба все перевести на рельсы bash.
3
0 / 0 / 0
Регистрация: 21.10.2018
Сообщений: 39
17.01.2019, 20:57  [ТС]
Нет, у меня другая задача в bash, связанная с символическими ссылками
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:00
Цитата Сообщение от YuS_2 Посмотреть сообщение
т.е. с помощью массива расчет делался один раз
Всё равно в следующий раз могут попросить больший номер

Цитата Сообщение от Rocksos Посмотреть сообщение
Не беспокойтесь, у меня уже есть все, что нужно
Я не беспокоюсь, а просто интересно (т.к пример предельно простой), почему не заработало?

Цитата Сообщение от Rocksos Посмотреть сообщение
вы не разбираетесь в bash скриптах
В bash скриптах разбираются тут - https://www.cyberforum.ru/shell/
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
17.01.2019, 21:01
Rocksos, что именно нужно?

Не по теме:

KDE777, YuS_2, ну и вы строчите с первой космической, аж с ответом запоздал, про [BigInt] даже не увидел сообщения. В случае с матрицами результат в Double, но сам алгоритм O(n) ежели чего.

0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:14
Цитата Сообщение от greg zakharov Посмотреть сообщение
но сам алгоритм O(n) ежели чего
Ага, всех обогнали!

PowerShell
1
2
3
4
5
6
$nn = 1400
(1..10 |%{ (Measure-Command {$f1,$f2,$b = 1,2,0; $n=$nn; for($i=3; $i -le $n; $i++){$b=$f1; $f1=$f2; $f2=$b+$f1};$f2}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |% {(Measure-Command {$k = $nn+1; $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]}}; $arr[-1]}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |%{ (Measure-Command {fib ($nn+1)}).TotalMilliseconds}|Measure-Object -Average).Average
Code
1
2
3
4
5
19,70316
 
18,0718
 
7,80317
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 21:18
Цитата Сообщение от KDE777 Посмотреть сообщение
Всё равно в следующий раз могут попросить больший номер
Дык, не было надобности, на тот момент, а если вдруг, то вот выше и решение для определенного номера, причем без ограничения на максимальный номер (естественно, в пределах ограничения самого типа числа).

Цитата Сообщение от greg zakharov Посмотреть сообщение
стоит задуматься над использованием матриц
Можно и матрицами, только это, конечно, усложнит скрипт, а студенты могут и не иметь понятия о матрицах

Цитата Сообщение от greg zakharov Посмотреть сообщение
ну и вы строчите с первой космической
0
 Аватар для KDE777
1887 / 1109 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
17.01.2019, 21:29
Цитата Сообщение от KDE777 Посмотреть сообщение
19,70316
18,0718
7,80317
Не, это не корректные замеры Там в первых двух вариантах переменные оставались [BigInt] типа...

Если всё привести к double и запустить в новом ISE - получится полная ничья (для 1400 номера)

PowerShell
1
2
3
4
5
6
$nn = 1400
(1..10 |%{ (Measure-Command {$f1,$f2,$b = 1,2,0; $n=$nn; for($i=3; $i -le $n; $i++){$b=$f1; $f1=$f2; $f2=$b+$f1};$f2}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |% {(Measure-Command {$k = $nn+1; $arr=new-object 'double[]' ($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]}}; $arr[-1]}).TotalMilliseconds}|Measure-Object -Average).Average
''
(1..10 |%{ (Measure-Command {fib ($nn+1)}).TotalMilliseconds}|Measure-Object -Average).Average
Code
1
2
3
4
5
7,91295
 
8,12313
 
7,72487
Вариант 1, по моему самый простой/наглядный, а вариант 2 бонусом сохраняет и все меньшие номера...
0
Любознательный
 Аватар для YuS_2
7407 / 2260 / 361
Регистрация: 10.03.2016
Сообщений: 5,216
17.01.2019, 21:41
Цитата Сообщение от KDE777 Посмотреть сообщение
Вариант 1, по моему самый простой/наглядный, а вариант 2 бонусом сохраняет и все меньшие номера...
да, использование того или иного варианта будет зависеть от конечной задачи...
у варианта 1 плюс в том, что нет ограничения на максимальный номер, в отличие от варианта 2, где максимальный номер будет зависеть от ограничения на размер массива, т.е. от конфигурации железа, как минимум...
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
18.01.2019, 17:32
Тема была бы неполной, если бы не было добавлено немного brainfuck'а
PowerShell
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
using namespace System.IO
using namespace System.Text
 
function Invoke-BrainFuck {
  [CmdletBinding(DefaultParameterSetName='Path')]
  param(
    [Parameter(Mandatory, ParameterSetName='Path', Position=0)]
    [ValidateScript({($script:src = Get-Item $_ -ea 0
    ) -and $src.Extension -cmatch '^.bf?$'})]
    [ValidateNotNullOrEmpty()]
    [String]$Path,
 
    [Parameter(Mandatory, ParameterSetName='Code', Position=0)]
    [ValidateNotNullOrEmpty()]
    [String]$Code
  )
 
  process {
    $x, $ops = '$i=0;$b=[Byte[]]::new($c.Length);', ((,$null*43)+'$b[$i]++'+
    '$b[$i]=$host.UI.ReadLine()'+'$b[$i]--'+'Write-Host $([Char]$b[$i]) -N'+
    (,$null*13)+'$i--'+$null+'$i++'+(,$null*28)+'while($b[$i]){'+$null+'}')
    .([ScriptBlock]::Create("$x$(($c = switch ($PSCmdlet.ParameterSetName) {
      'Path' { [File]::ReadAllBytes($src.FullName) }
      'Code' { [Encoding]::ASCII.GetBytes($Code)   }
    }).ForEach{"$($ops[$_]);"})"))
  }
}
Это черновой вариант, тем не менее позволяющий вывести числа Фибоначчи следующим кодом (сам ряд чисел, не по индексу):
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# собственно brainfuck
$fib = @'
>++++++++++>+>+[
   [+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[
      [-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-
          [>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>>
   ]<<<
]
'@
 
# исполняем код
Invoke-BrainFuck -Code $fib
# или с предварительным сохранением
# Out-File fibonacci.b -InputObject $fib -Encoding ASCII
# Invoke-BrainFuck fibonacci.b
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2019, 17:32

Запуск нескольких ps1 скриптов через Powershell
Всем привет. Есть папка в которой находятся ещё папки, в этих папка лежат файлы с одинаковым именем. Например ...

Как правильно дебаггить ps1-скрипты?
Если команда запускается из ISE, но не работает из командлета, как правильно дебаггить в таком случае? Я правильно понимаю, что PoSh...

Вывод файлов папки, измененных после даты создания самой папки
я так понимаю, надо использовать ls, но с какими параметрами. также, я не ориентируюсь в синтаксисе баша. Может кто напишет скриптик для...

Составить программу определения числа Фибоначчи по его номеру в последовательности
Числа Фибоначчи 1, 1, 2, 3, 5, 8, 13 и т.д. В общем случае числа Фибоначчи (fn) определяются формулами: f0=f1=1; fn=fn-1+fn-2 при n=2,3,......

Поиск числа Фибоначчи (через операторы цикла for, while и do . while) по его номеру в последовательности
Здравствуйте,подскажите,пожалуйста, как реализовать это тз для отрицательного значения,при этом ,используя циклы? Я могу реализовать это...


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

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

Новые блоги и статьи
Жара жесть.
kumehtar 18.08.2026
Пролетают летом дни Тридцать пять жары в тени. Каждый август год от года Дарит жаркую погоду.
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru