mitin228133770
?>

На фотографии- победители конкурса. зеленый карандаш сидит рядом с оранжевым и красным, желтый- между красным и синим. оранжевый карандаш на портрете сидит правее желтого, но не рядом с ним. раскрась все карандаши на портретев каком порядке раскрасить все карандаши? )

Информатика

Ответы

Дмитрий Бундин
Наверное так только не жалуйся на меня
a60ikurgannikova
Синий желтый красный зеленый оранжевый
ryazantseva

Последующие десять лет проект «компьютеров пятого поколения» стал испытывать ряд трудностей разного типа.

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

Другая проблема возникла с производительностью процессоров. Оказалось, что технологии 80-х годов быстро перескочили те барьеры, которые перед началом проекта считались «очевидными» и непреодолимыми. А запараллеливание многих процессоров не вызывало ожидаемого резкого скачка производительности. Получилось так, что рабочие станции, созданные в рамках проекта, успешно достигли и даже превзошли требуемые мощности, но к этому времени появились коммерческие компьютеры, которые были ещё мощнее.

elivanova

Linq используется для генерации последовательности

using System.Linq;

Длина последовательности задаётся тут.

private static int Size => 7

Разберём главный код.

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

Для этого генерируем случайно крайние значения диапазона генерации.

int seedMin = new Random().Next(1, 40);

int seedMax = new Random().Next(seedMin + 5, seedMin + 40);

Далее генерируем саму последовательность.

var arr = Enumerable  //Класс из Linq для работы с перечислениями

              .Repeat(0, Size) // Задаём количество

              .Select(_ => new Random().Next(seedMin, seedMax)) // Для каждого элемента генерируем случайное значение

              .ToArray(); // Делаем массивом

Ну а теперь, можно заняться поиском и вычислением.

int max = arr[0], min = arr[0]; // Предполагаем max и min первым элементом

foreach (var el in arr) {

        max = Math.Max(el, max); //  Если очередной больше - заменяем max

        min = Math.Min(el, min); //  Если очередной меньше - заменяем min

}

Теперь мы нашли минимальным и максимальный элементы. Нам надо убрать их из последовательности ровно по одному разу. Для этого создаём переменные-флаги типа bool. Если наткнёмся на max или min при расчете, то пропустим их и отметим, что уже встречали.

Создадим переменную для произведения и приравняем к 1 (если 0, то произведение будет 0).

int product = 1;

bool maxIsCatched = false, minIsCatched = false;

Ищем произведение.

foreach (var el in arr)

          {

              if (!maxIsCatched && el == max) // Если не встречали до этого и встретили сейчас

              {

                  maxIsCatched = true; //Запоминаем факт встречи

                  continue; // Пропускаем шаг

              }

              if (!minIsCatched && el == min) // По аналогии но с min

              {

                  minIsCatched = true;

                  continue;

              }

              product *= el; // Это всё равно, что написать  product = product * el

          }

Далее просто выводим результаты.

Сначала выводим сгенерированную последовательность.

Затем найденные max, min и product.

PrintArr(arr);

Console.WriteLine($"Max: {max}; Min: {min}; Product: {product}.");

Метод для печати последовательности написан самостоятельно и выглядит так.

private static void PrintArr<T>(IEnumerable<T> arr)

{

     foreach (var el in arr) // Перебираем

     {

          Console.Write(el); // Печатаем

           Console.Write(" ");

     }

     Console.WriteLine();

}

<T> используется для того, чтобы не зависеть от значений последовательности. Туда можно запихнуть любой массив или список.

IEnumerable<T> - обобщение для любой перечислимой коллекции.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

На фотографии- победители конкурса. зеленый карандаш сидит рядом с оранжевым и красным, желтый- между красным и синим. оранжевый карандаш на портрете сидит правее желтого, но не рядом с ним. раскрась все карандаши на портретев каком порядке раскрасить все карандаши? )
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

orantus3
dream2366
far-yuliya128
kia80
Artyukhin545
filimon211
ivstigres65
doorhan42n6868
almihanika435
Кедрин Карлен
Елена_Кошевой
m-zolotukhina2
svetlana-ladyga
NIKOLAI
Viktorovich395