С Новым годом! Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 146

Перевод из 2-ой с.с в 16-ую с.с

23.02.2023, 16:09. Показов 1343. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал реализацию функции перевода, но работает некорректно. Подскажите в чём ошибка
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
function Convert2To16([string]$bin_num) {
    # Проверка ввода
    if ($bin_num -notmatch '^[01\.]+$') {
        return "Ошибка: введено некорректное значение."
    }
 
    # Разделение на целую и дробную части
    $int_part, $frac_part = $bin_num.Split('.')
 
    # Перевод целой части в 16-ричную систему счисления
    $int_hex = ''
    $int_dec = [Convert]::ToInt32($int_part, 2)
    while ($int_dec -ne 0) {
        $rem = $int_dec % 16
        switch ($rem) {
            0 {$int_hex = '0' + $int_hex}
            1 {$int_hex = '1' + $int_hex}
            2 {$int_hex = '2' + $int_hex}
            3 {$int_hex = '3' + $int_hex}
            4 {$int_hex = '4' + $int_hex}
            5 {$int_hex = '5' + $int_hex}
            6 {$int_hex = '6' + $int_hex}
            7 {$int_hex = '7' + $int_hex}
            8 {$int_hex = '8' + $int_hex}
            9 {$int_hex = '9' + $int_hex}
            10 {$int_hex = 'A' + $int_hex}
            11 {$int_hex = 'B' + $int_hex}
            12 {$int_hex = 'C' + $int_hex}
            13 {$int_hex = 'D' + $int_hex}
            14 {$int_hex = 'E' + $int_hex}
            15 {$int_hex = 'F' + $int_hex}
        }
        $int_dec = [int]($int_dec / 16)
    }
 
    if ($frac_part) {
        # Перевод дробной части в 16-ричную систему счисления
        $frac_hex = ''
        $frac_dec = 0
        $frac_div = 1
        foreach ($bit in $frac_part.ToCharArray()) {
            if ($bit -eq '1') {
                $frac_dec += 1 / [Math]::Pow(2, $frac_div)
            }
            $frac_div += 1
        }
        for ($i = 0; $i -lt 4; $i++) {
            $frac_dec *= 16
            $rem = [int]$frac_dec
            switch ($rem) {
                0 {$frac_hex += '0'}
                1 {$frac_hex += '1'}
                2 {$frac_hex += '2'}
                3 {$frac_hex += '3'}
                4 {$frac_hex += '4'}
                5 {$frac_hex += '5'}
                6 {$frac_hex += '6'}
                7 {$frac_hex += '7'}
                8 {$frac_hex += '8'}
                9 {$frac_hex += '9'}
                10 {$frac_hex += 'A'}
                11 {$frac_hex += 'B'}
                12 {$frac_hex += 'C'}
                13 {$frac_hex += 'D'}
                14 {$frac_hex += 'E'}
                15 {$frac_hex += 'F'}
            }
            $frac_dec -= $rem
        }
        # Объединение 16-ричных чисел целой и дробной частей
        $result = $int_hex + '.' + $frac_hex
    } else {
        # Присвоение значения переменной результата, если дробная часть отсутствует
        $result = $int_hex
    }
    # Возвращение значения
return "Результат: $result"
}
 
$bin_number = Read-Host "Введите число в двоичной системе счисления"
$hex_number = convert2To16 $bin_number
Write-Host $hex_number
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2023, 16:09
Ответы с готовыми решениями:

Перевод чисел с плавающей точкой | перевод числа из 10 сс в сс половинной точности
не могу перевести -2^-24 (10сс) => X (половинной точности) помогите пожалуйста

Перевод из С++ в С. Также перевод чисел из одной системы счисления в другую
Задача: Автоморфными называются числа, которые содержатся в последних разрядах их квадрата, например, десятичные числа: 5^2 = 25, 25^2 =...

Перевод символов в число(машинный код), сложение с другим числом,обратный перевод в символ
Проблема такова: на вход поступает текст(на русском языке), по символьно надо перевести каждую букву в число, в зависимости от способа...

17
1658 / 273 / 66
Регистрация: 03.06.2020
Сообщений: 689
23.02.2023, 18:53
Перемудрили:

PowerShell
1
2
3
'0x{0:x}' -f 0b10111000111                          # 0x5c7   PowerShell Core
 
'0x{0:x}' -f [convert]::ToInt32('10111000111',2)    # 0x5c7    Windows PowerShell
2
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
23.02.2023, 23:17
PowerShell
1
2
function([int]$n){'0x{0:x}'-f$n}
⒃ 0b10111000111  # 0x5c7
2
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
24.02.2023, 15:22
PowerShell
1
0b10111000111|fhx
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
24.02.2023, 20:14
Цитата Сообщение от volodin661 Посмотреть сообщение
0b10111000111
PowerShell
1
0b11111111
?
1
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 146
25.02.2023, 20:09  [ТС]
делаю не используя встроенные фукнции
0
 Аватар для alhaos
1929 / 545 / 154
Регистрация: 20.02.2019
Сообщений: 2,663
Записей в блоге: 65
25.02.2023, 21:18
tot samui, ради спортивного интереса конечно можно, и как средство изучение языка тоже имеет смысл, но сомневаюсь, что решение будет конкурентоспособно по каким либо критериям, не рекомендую относиться к этому серьезно.
0
0 / 0 / 0
Регистрация: 11.09.2020
Сообщений: 146
25.02.2023, 23:11  [ТС]
Соглашусь, но хочется все же понять в чём моя ошибка
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
26.02.2023, 11:49
Цитата Сообщение от tot samui Посмотреть сообщение
делаю не используя встроенные фукнции
А это, что:
Цитата Сообщение от tot samui Посмотреть сообщение
$int_dec = [Convert]::ToInt32($int_part, 2)
?

Цитата Сообщение от tot samui Посмотреть сообщение
но хочется все же понять в чём моя ошибка
Как минимум, округлять здесь:
Цитата Сообщение от tot samui Посмотреть сообщение
$int_dec = [int]($int_dec / 16)
не следует. Используйте [math]::truncate([decimal] $var)
1
Модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для NoNaMe
2609 / 747 / 160
Регистрация: 10.06.2009
Сообщений: 2,956
26.02.2023, 12:54
tot samui, так ошибка в условии цикла.
13 строка должна быть вот такая:
PowerShell
1
while ($int_dec -ne 1)
Как ариант использовать цикл do until:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    do {
        $rem = $int_dec % 16
        switch ($rem) {
            0 {$int_hex = '0' + $int_hex}
            1 {$int_hex = '1' + $int_hex}
            2 {$int_hex = '2' + $int_hex}
            3 {$int_hex = '3' + $int_hex}
            4 {$int_hex = '4' + $int_hex}
            5 {$int_hex = '5' + $int_hex}
            6 {$int_hex = '6' + $int_hex}
            7 {$int_hex = '7' + $int_hex}
            8 {$int_hex = '8' + $int_hex}
            9 {$int_hex = '9' + $int_hex}
            10 {$int_hex = 'A' + $int_hex}
            11 {$int_hex = 'B' + $int_hex}
            12 {$int_hex = 'C' + $int_hex}
            13 {$int_hex = 'D' + $int_hex}
            14 {$int_hex = 'E' + $int_hex}
            15 {$int_hex = 'F' + $int_hex}
        }
        $int_dec = [int]($int_dec / 16)
    } until ($int_dec -ne 0)
Добавлено через 9 минут
3-я строка имеет не верную проверку, вдруг я туда отдам несколько точек?
PowerShell
1
if ($bin_num -notmatch '^(?:(?:[01]+\.[01]+)|(?:[01]+))$') {
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
26.02.2023, 14:43
Цитата Сообщение от NoNaMe Посмотреть сообщение
[int]($int_dec / 16)
PowerShell
1
1..15|%{[int]($_ /16)}
собственно:
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
$int_hex = ''
$int_dec = 8
do {
    $rem = $int_dec % 16
    switch ($rem) {
        0 {$int_hex = '0' + $int_hex}
        1 {$int_hex = '1' + $int_hex}
        2 {$int_hex = '2' + $int_hex}
        3 {$int_hex = '3' + $int_hex}
        4 {$int_hex = '4' + $int_hex}
        5 {$int_hex = '5' + $int_hex}
        6 {$int_hex = '6' + $int_hex}
        7 {$int_hex = '7' + $int_hex}
        8 {$int_hex = '8' + $int_hex}
        9 {$int_hex = '9' + $int_hex}
        10 {$int_hex = 'A' + $int_hex}
        11 {$int_hex = 'B' + $int_hex}
        12 {$int_hex = 'C' + $int_hex}
        13 {$int_hex = 'D' + $int_hex}
        14 {$int_hex = 'E' + $int_hex}
        15 {$int_hex = 'F' + $int_hex}
    }
    $int_dec = [int]($int_dec / 16)
} until ($int_dec -ne 0)
или так:
Цитата Сообщение от NoNaMe Посмотреть сообщение
while ($int_dec -ne 1)
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
$int_hex = ''
$int_dec = 8
while ($int_dec -ne 1) {
    $rem = $int_dec % 16
    switch ($rem) {
        0 {$int_hex = '0' + $int_hex}
        1 {$int_hex = '1' + $int_hex}
        2 {$int_hex = '2' + $int_hex}
        3 {$int_hex = '3' + $int_hex}
        4 {$int_hex = '4' + $int_hex}
        5 {$int_hex = '5' + $int_hex}
        6 {$int_hex = '6' + $int_hex}
        7 {$int_hex = '7' + $int_hex}
        8 {$int_hex = '8' + $int_hex}
        9 {$int_hex = '9' + $int_hex}
        10 {$int_hex = 'A' + $int_hex}
        11 {$int_hex = 'B' + $int_hex}
        12 {$int_hex = 'C' + $int_hex}
        13 {$int_hex = 'D' + $int_hex}
        14 {$int_hex = 'E' + $int_hex}
        15 {$int_hex = 'F' + $int_hex}
    }
    $int_dec = [int]($int_dec / 16)
}
ЗЫ
А, да... все помнят как останавливать бесконечный цикл?
0
Модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для NoNaMe
2609 / 747 / 160
Регистрация: 10.06.2009
Сообщений: 2,956
26.02.2023, 15:42
YuS_2, давайте вы лучше напишете код с бесконечным циклом в этом примере, а не копи-пастой кода, который уже подсказали как поправить!
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
26.02.2023, 20:35
Цитата Сообщение от NoNaMe Посмотреть сообщение
лучше напишете код с бесконечным циклом в этом примере, а не копи-пастой кода, который уже подсказали как поправить!
А, эммм... вопрос ТС-а был в том, чтобы выявить место, где он ошибся... выше, место указано, где она и даже показано, как её обойти...
Но в следующем сообщении, где Ваша подсказка, содержится ошибка... именно на неё, я указал здесь

Про какой копи-паст речь, собственно? Никакого бесконечного цикла я не предлагал, бесконечный цикл получается по Вашей подсказке... просто запустите код и будет всё понятно.

Добавлено через 3 часа 15 минут
Цитата Сообщение от tot samui Посмотреть сообщение
делаю не используя встроенные фукнции
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function converter {
    param (
        [Parameter(Mandatory)]
        [AllowEmptyString()]
        [ValidateLength(1,20)]
        [ValidatePattern("[0-9A-Fa-f\.]+")]
        [string]$num,
        [ValidateSet(2,8,10,16)]
        [int]$s1 = 2,
        [ValidateSet(2,8,10,16)]
        [int]$s2 = 16
    )
    if ($s1 -eq $s2){
        return "Сорри, невменяемые действия не выполняю :)"
    }
    if($s1 -lt 16){
        $x = $s1 - 1
        if (($num -match '[A-Fa-f]') -or
            (sls -inp $num -patt '\.' -all).matches.count -gt 1 -or
            $num -match "[^0-$x.]"
        ){
            return "Таких чисел не бывает"
        }
    } else {
        if ((sls -inp $num -patt '\.' -all).matches.count -gt 1){
            return "Таких чисел не бывает"
        }
    }
    $arr = @('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F')
    $numint,$numfrct = $num.split('.')
    $i,$k = ($numint.length-1),0
    if ($numint) {
        foreach ($itemint in $numint.tochararray()){
            if($s1 -lt 16){$a = [int]"$itemint"} else {$a = iex "0x$itemint"}
            $tmpint += $a*([math]::pow($s1,$i))
            $i--
        }
    } else {$tmpint = 0}
    if ($numfrct){
        foreach ($itemfrct in $numfrct.tochararray()){
            $k--
            if($s1 -lt 16){$b = [int]"$itemfrct"} else {$b = iex "0x$itemfrct"}
            $tmpfrct += $b*[math]::pow($s1,$k)
        }
    }
    $numdec = (iex "$tmpint") + $tmpfrct
    if ($s2 -eq 10){return "$numdec"} else {$onumint,$onumfrct = "$numdec".split('.')}
    $outstr,$otmpint = '',(iex "$onumint")
    if ($otmpint){
        while ($otmpint -gt 0){
            $outstr = "$($arr[($otmpint % $s2)])" + $outstr
            $otmpint = [math]::truncate($otmpint/$s2)
        }
    } else {$outstr = $arr[0]}
    if ($onumfrct){
        $outstr += '.'
        $otmpfrct,$j = (iex "0.$onumfrct"),0
        while ($otmpfrct -gt 0 -and $j -lt 6){
            $j++
            $otmpfrct *= $s2 
            $outstr += $arr[([math]::truncate($otmpfrct))]
            if ($otmpfrct -ge 1){$otmpfrct -= [math]::truncate($otmpfrct)}
        }
    }
    return $outstr
}
 
 
$n = read-host 'Введите число '
$ss1 = read-host 'Введите основание системы счисления входящего числа (2,8,10,16) '
$ss2 = read-host 'Введите основание системы счисления выходящего числа (2,8,10,16) '
$param = @{num = $n}
if ($ss1 -or $ss2){
    $param += @{
        s1 = [int]$ss1
        s2 = [int]$ss2
    }
}
 
converter @param
1
1658 / 273 / 66
Регистрация: 03.06.2020
Сообщений: 689
26.02.2023, 22:39
"Литературный" )) подход, минимум арифметики:

PowerShell
1
2
3
4
5
6
7
8
9
10
$str = [string](Read-Host "Введите двоичное число")
$str = ('0' * (4 - $str.Length % 4)) + $str 
 
$str -split '(?<=\d{4})(?=(?:\d{4})+$)' `
     -replace '0000','0' -replace '0001','1' -replace '0010','2' `
     -replace '0011','3' -replace '0100','4' -replace '0101','5' `
     -replace '0110','6' -replace '0111','7' -replace '1000','8' `
     -replace '1001','9' -replace '1010','a' -replace '1011','b' `
     -replace '1100','c' -replace '1101','d' -replace '1110','e' `
     -replace '1111','f' -join ''
2
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
27.02.2023, 14:45
Вот эти мудацкие бэктики (`) в конце строк в применении к C-образному шеллу
вместо проверенной полувеком точки с запятой в конце expression,
которая решает все проблемы при красивом форматировании исходника и идеальна в однострочниках.

Я не понимаю, что в головах у этих лошар из Microsoft

а было бы так:

PowerShell
1
2
3
4
5
6
7
$str
 -split '(....)'
   -replace '0000','0' -replace '0001','1' -replace '0010','2' -replace '0011','3' -replace '0100','4'
   -replace '0101','5' -replace '0110','6' -replace '0111','7' -replace '1000','8' -replace '1001','9' 
   -replace '1010','a' -replace '1011','b' -replace '1100','c' -replace '1101','d' -replace '1110','e' 
   -replace '1111','f'
 -join '';
1
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
27.02.2023, 21:10
Цитата Сообщение от lesser Посмотреть сообщение
"Литературный" )) подход
от гуманитарии...
А слабо реплейсами мурку сбацать сделать перевод из 20-тиричной в 18-ричную, а лучше вообще, например, любую систему счисления в пределах 20, из одной в другую?

Добавлено через 1 минуту
Цитата Сообщение от volodin661 Посмотреть сообщение
Вот эти мудацкие бэктики (`)
PowerShell
1
2
"abcd" -replace
"b","9"
а так, не работает?
0
 Аватар для volodin661
6671 / 2264 / 346
Регистрация: 10.12.2013
Сообщений: 7,827
27.02.2023, 23:54
Вот что делает животворящая точка с запятой: ))

Perl
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
44
#!/usr/bin/perl -w                                      # camel code
use strict;
 
                                           $_='ev
                                       al("seek\040D
           ATA,0,                  0;");foreach(1..3)
       {<DATA>;}my               @camel1hump;my$camel;
  my$Camel  ;while(             <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary           1=split(//);if(defined($
_=<DATA>)){@camel1hum        p=split(//);}while(@dromeda
 ry1){my$camel1hump=0      ;my$CAMEL=3;if(defined($_=shif
        t(@dromedary1    ))&&/\S/){$camel1hump+=1<<$CAMEL;}
       $CAMEL--;if(d   efined($_=shift(@dromedary1))&&/\S/){
      $camel1hump+=1  <<$CAMEL;}$CAMEL--;if(defined($_=shift(
     @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
     defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
     L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
      ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
      064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
       print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
        /LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
         $_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval;   eval
           ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;(   );;s
             ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__   \124
               \1   50\145\040\165\163\145\040\157\1 46\040\1  41\0
                    40\143\141  \155\145\1 54\040\1   51\155\  141
                    \147\145\0  40\151\156 \040\141    \163\16 3\
                     157\143\   151\141\16  4\151\1     57\156
                     \040\167  \151\164\1   50\040\      120\1
                     45\162\   154\040\15    1\163\      040\14
                     1\040\1   64\162\1      41\144       \145\
                     155\14    1\162\       153\04        0\157
                      \146\     040\11     7\047\         122\1
                      45\15      1\154\1  54\171          \040
                      \046\         012\101\16            3\16
                      3\15           7\143\15             1\14
                      1\16            4\145\163           \054
                     \040            \111\156\14         3\056
                    \040\         125\163\145\14         4\040\
                    167\1        51\164\1  50\0         40\160\
                  145\162                              \155\151
                \163\163                                \151\1
              57\156\056

Код рабочий.

Output:

Кликните здесь для просмотра всего текста
Code
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
#
#          mJXXLm.                                       .mJXXLm
#         JXXXXXXXXL.       JXXLm.       .mJXXL       .JXXXXXXXXL
#        {XXXXXXXXXXX.     JXXXmXXXXm mXXXXmXXXL     .XXXXXXXXXXX}
#       .XXXXXXXXXXXXXL.  {XXXXXXXXXF 7XXXXXXXXX}  .JXXXXXXXXXXXXX.
#      JXXXXXXXXXXXXXXXXL.`XXXXXX.       .XXXXXX'.JXXXXXXXXXXXXXXXXL
#     JXXXXXXXXXXXXXXXXXXXmXXXXXXX.     .XXXXXXXmXXXXXXXXXXXXXXXXXXXL
#   .XXXXXXXXXXXXXXXXXXXXXXXXXXXXX}     {XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
#  .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
#  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXF       7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#  XX'7XXXXXXXXXXXXXXXXXXXXXXXXXF         7XXXXXXXXXXXXXXXXXXXXXXXXXF`XX
#  XX {XXXFXXXXXXXXXXXXXXXXXXXF'           `7XXXXXXXXXXXXXXXXXXX7XXX} XX
#  `X}{XXX'7XXXFXXXXX^XXXXX `'               `' XXXXX^XXXXX7XXXF`XXX}{X'
#   `'XXX' {XXX'XXXXX 7XXXF                     7XXXF XXXXX`XXX} `XXX`'
#    .XX}  {XXF {XXXX}`XXX}                     {XXX'{XXXX} 7XX}  {XX.
#    {XX   `XXL  `7XX} 7XX}                     {XXF {XXF'  JXX'   XX}
#    `XX    `XXL mXXF  {XX                       XX}  7XXm JXX'    XX'
#     XX      7XXXF    `XX                       XX'    7XXXF      XX
#     XX.    JXXXX.     7X.                     .XF     .XXXXL    .XX
#    {XXL    7XF7XXX.   {XX                     XX}   .XXXF7XF    JXX}
#    `XXX'              `XXXm                 mXXX'              `XXX'
#                        ^^^^^               ^^^^^
#                     .mJXXLm                  mJXXLm.
#     .mJXXL       .JXXXXXXXXL                JXXXXXXXXL.       JXXLm.
#  mXXXXmXXXL     .XXXXXXXXXXX}              {XXXXXXXXXXX.     JXXXmXXXXm
#  7XXXXXXXXX}  .JXXXXXXXXXXXXX.            .XXXXXXXXXXXXXL.  {XXXXXXXXXF
#    .XXXXXX'.JXXXXXXXXXXXXXXXXL          JXXXXXXXXXXXXXXXXL.`XXXXXX.
#   .XXXXXXXmXXXXXXXXXXXXXXXXXXXL        JXXXXXXXXXXXXXXXXXXXmXXXXXXX.
#   {XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.    .XXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
#    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.  .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#     7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXF
#      7XXXXXXXXXXXXXXXXXXXXXXXXXF`XX  XX'7XXXXXXXXXXXXXXXXXXXXXXXXXF
#      `7XXXXXXXXXXXXXXXXXXX7XXX} XX  XX {XXXFXXXXXXXXXXXXXXXXXXXF'
#        `' XXXXX^XXXXX7XXXF`XXX}{X'  `X}{XXX'7XXXFXXXXX^XXXXX `'
#            7XXXF XXXXX`XXX} `XXX`'    `'XXX' {XXX'XXXXX 7XXXF
#            {XXX'{XXXX} 7XX}  {XX.      .XX}  {XXF {XXXX}`XXX}
#            {XXF {XXF'  JXX'   XX}      {XX   `XXL  `7XX} 7XX}
#             XX}  7XXm JXX'    XX'      `XX    `XXL mXXF  {XX
#             XX'    7XXXF      XX        XX      7XXXF    `XX
#            .XF     .XXXXL    .XX        XX.    JXXXX.     7X.
#            XX}   .XXXF7XF    JXX}      {XXL    7XF7XXX.   {XX
#          mXXX'              `XXX'      `XXX'              `XXXm
#         ^^^^^                                              ^^^^^
1
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
28.02.2023, 08:03
Цитата Сообщение от volodin661 Посмотреть сообщение
Вот что делает животворящая точка с запятой
зачем тут эти ваши перлы?
живут одни здесь powershell-ы


lesser,
Цитата Сообщение от YuS_2 Посмотреть сообщение
мурку сбацать
Это я к чему, собственно...
Код выше, искусственно зажат на общераспространенные системы, но по сути он универсален:
легким движением руки, брюки превращаются... брюки превращаются... превращаются брюки... в элегантные шорты:
элегантные шорты
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function converter {
    param (
        [Parameter(Mandatory)]
        [AllowEmptyString()]
        [ValidateLength(1,30)]
        [ValidatePattern("[0-9A-Ja-j\.]+")]
        [string]$num,
        [ValidateRange(2,20)]
        [int]$s1 = 2,
        [ValidateRange(2,20)]
        [int]$s2 = 16
    )
    if ($s1 -eq $s2){
        return "Сорри, невменяемые действия не выполняю :)"
    }
    if($s1 -le 10){
        $x = $s1 - 1
        if (($num -match '[A-Ja-j]') -or
            (sls -inp $num -patt '\.' -all).matches.count -gt 1 -or
            $num -match "[^0-$x.]"
        ){
            return "Таких чисел не бывает"
        }
    } else {
        if ((sls -inp $num -patt '\.' -all).matches.count -gt 1){
            return "Таких чисел не бывает"
        }
    }
    $arr = @('0','1','2','3','4','5','6','7','8','9','A',
    'B','C','D','E','F','G','H','I','J')
    $numint,$numfrct = $num.split('.')
    $i,$k = ($numint.length-1),0
    if ($numint) {
        foreach ($itemint in $numint.tochararray()){
            if($s1 -le 10){$a = [int]"$itemint"} else {
                $a = [array]::indexof($arr,([string]$itemint).toupper())
            }
            $tmpint += $a*([math]::pow($s1,$i))
            $i--
        }
    } else {$tmpint = 0}
    if ($numfrct){
        foreach ($itemfrct in $numfrct.tochararray()){
            $k--
            if($s1 -le 10){$b = [int]"$itemfrct"} else {
                $b = [array]::indexof($arr,([string]$itemfrct).toupper())
            }
            $tmpfrct += $b*[math]::pow($s1,$k)
        }
    }
    $numdec = (iex "$tmpint") + $tmpfrct
    if ($s2 -eq 10){return "$numdec"} else {$onumint,$onumfrct = "$numdec".split('.')}
    $outstr,$otmpint = '',(iex "$onumint")
    if ($otmpint){
        while ($otmpint -gt 0){
            $outstr = "$($arr[($otmpint % $s2)])" + $outstr
            $otmpint = [math]::truncate($otmpint/$s2)
        }
    } else {$outstr = $arr[0]}
    if ($onumfrct){
        $outstr += '.'
        $otmpfrct,$j = (iex "0.$onumfrct"),0
        while ($otmpfrct -gt 0 -and $j -lt 20){
            $j++
            $otmpfrct *= $s2 
            $outstr += $arr[([math]::truncate($otmpfrct))]
            if ($otmpfrct -ge 1){$otmpfrct -= [math]::truncate($otmpfrct)}
        }
    }
    return $outstr
}
 
 
$n = read-host 'Введите число '
$ss1 = read-host 'Введите основание системы счисления входящего числа (2-20) '
$ss2 = read-host 'Введите основание системы счисления выходящего числа (2-20) '
$param = @{num = $n}
if ($ss1 -and $ss2){
    $param += @{
        s1 = [int]$ss1
        s2 = [int]$ss2
    }
}
 
converter @param
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2023, 08:03
Помогаю со студенческими работами здесь

Перевод кода с Паскаля в Си. (Перевод цепной дроби в обыкновенную)
Помогите переписать на Си, пожалуйста. procedure AntiExp; var s: array of integer; a,b, i,n,t: integer; q: char; begin ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru