поаввав
28.03.2022 00:47

Дан фрагмент программы, осуществляющий поиск в массиве длины n (все элементы массива различны и имеют индексы от 0 до n − 1).

Чему будет равно значение переменной x после выполнения фрагмента программы? Выберите один из вариантов ответа и запишите его номер.

значению максимального элемента массива;
значению минимального элемента массива;
индексу элемента массива, имеющего максимальное значение;
индексу элемента массива, имеющего минимальное значение.​


Дан фрагмент программы, осуществляющий поиск в массиве длины n (все элементы массива различны и имею

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
livr5
20.11.2022 02:34
// F#
open System
let anyNumberSymbol = "?"
let replaceSymbolOnIndex (str:string) (number:int) (index:int) =
    String.Format("{0}{1}{2}", str.Substring(0, index), number, str.Substring(index+1))
let rec getAllValues (valueStr:string) =
    let index = valueStr.IndexOf(anyNumberSymbol)
    if index > -1
        then
            let newStrings =
                [0..9]
                |> Seq.map (fun x -> replaceSymbolOnIndex valueStr x index)
            newStrings |> Seq.collect (fun x -> getAllValues x)
        else
            [valueStr] |> List.toSeq 
let getResults (numbers:string list) =
     List.nth numbers 0
        |> getAllValues
        |> Seq.map (fun firstNumber ->
              List.nth numbers 1
                |> getAllValues
                |> Seq.map (fun secondNumber ->
                      List.nth numbers 2
                        |> getAllValues
                        |> Seq.map (fun resultNumber ->
                            if Int32.Parse(firstNumber) + Int32.Parse(secondNumber) = Int32.Parse(resultNumber)
                                then [String.Format("{0} + {1} = {2}", firstNumber, secondNumber, resultNumber)]
                                else []
                        )
                        |> Seq.collect (fun x -> x)
                )
                |> Seq.collect (fun x -> x)
        )
        |> Seq.collect (fun x -> x)
        |> Seq.toArray
[<EntryPoint>]
let main argv =
    let inputString = System.Console.ReadLine()
    let numbers = inputString.Split('+', '=') |> Array.map (fun x -> x.Trim())
    if numbers.Length = 3
        then
            let results = getResults (numbers |> Array.toList)
            if results.Length > 0
                then Console.WriteLine(results |> Seq.fold (fun result x -> result + "\n" + x) "")
                else Console.WriteLine("No results")
            Console.ReadKey(true) |> ignore
            0
        else
            1
0,0(0 оценок)
Ответ:
Неко163
13.02.2020 15:02
Var i, j, lensi, lensj, k, z, ni, nj, p: integer; // i - числитель числа, j - знаменатель числа, k, z - счетчики циклов; lensi - длина числителя (двухзначный или трехзначный); lensj - длина знаменателя (двухзначный или трехзначный); ni и nj - числитель и знаменатели нового числа (например, было 48/98. вычеркнули 8 и 8, получилось 4/9, где ni = 4, а nj = 9); p - индекс массива
newd, rez: real; // rez - здесь хранится результат деления числителя на знаменатель; newd - здесь хранится результат деления числителя на знаменатель при условии, что вычеркнуты цифры в rez
A, B, si, sj, nis, njs: string; // A, B, si, sj - временные переменные для хранения числителя и знаменателя в формате строк; nis, njs - переменные для хранения НОВОГО числителя и знаменателя в формате строк; W - просто строка, выводящая результат
W: array[1..10000] of string; // массив, сравнивающий строки для вывода уникальных
begin
p := 2;
for i := 10 to 500 do // начало цикла, перебирающего все числа до числа 500/500
for j := 10 to 500 do begin
rez := i / j; // здесь хранится значение деления, грубо говоря тут 49/98 (по примеру)
si := IntToStr( i ); // конвертируем числитель в строковый формат, чтобы было удобнее работать с отдельными его цифрами
sj := IntToStr( j ); // аналогично, только со знаменателем
lensi := length( si ); // узнаем длину числителя (может быть 2 или 3 - в зависимости от количества разрядов)
lensj := length( sj ); // аналогично, только со знаменателем
A := si; // создаем временные переменные, чтобы "вырезать" цифры
B := sj;

for k := 1 to lensi do // цикл сравнивания текущей цифры числителя с текущей цифрой знаменателя
for z := 1 to lensj do
begin
nis := si;
njs := sj;
if ( A[ k ] = B[ z ] ) then begin // если цифра в числителе равна цифре в знаменателе
Delete( nis, k, 1 ); // то она вычеркивается в числителе
Delete( njs, z, 1 ); // и вычеркивается в знаменателе
ni := StrToInt( nis ); // новое число уже БЕЗ одинаковых цифр цифр
nj := StrToInt( njs );
newd := ni / nj; // результат деления нового числа, грубо говоря тут 4/8 (по примеру)
if ( newd = rez ) then begin // если результат деления числа равен результату деления нового числа (которые без одинаковых цифр), то выводим интересную дробь
W[p] := IntToStr(i) + '/' + IntToStr(j) + ' = ' + IntToStr(ni) + '/' + IntToStr(nj);
if ( W[p] <> W[p - 1] ) then begin writeln(W[p]);
inc(p);
end;
end;
end;
end;
end;
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота