abdullaevs04
02.07.2022 06:43

Зарядка. максимальное значение силы пети равно f, а минимальное — 0. каждый раз, когда петя делает зарядку x дней подряд его сила увеличивается на 1. а если петя забывает делать зарядку y дней подряд, то его сила уменьшается на 1. дни учитываются без пересечений, т. е., например, за 2 * x дней зарядки подряд петя наберет +2 силы. каждый день петя записывает в журнал делал ли он зарядку в этот день или нет. в начале ведения журнала сила пети равна k. напишите программу, которая подсчитывает силу пети по окончанию ведения журнала. формат входных данных в первой строке содержится целое число k (0 ≤ k ≤ 100). во второй строке содержится целое число f (0 ≤ f ≤ 100). в третьей строке записаны целые числа x и y через пробел (1 ≤ x ≤ 10, 1 ≤ y ≤ 10). в четвертой строке записано число m (0 ≤ m ≤ 100) — количество записей в журнале. в пятой строке записана последовательность из нулей и единиц длиной m, где 0 означает, что петя не делал зарядку в этот день, а 1 — делал. формат выходных данных одно число — сила пети. пример входных и выходных файлов task4.in task4.out 3 10 3 3 7 1010111 4 1 10 2 2 10 111110 1

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
MashaBendyuk
05.05.2021 14:30

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> - обобщение для любой перечислимой коллекции.

0,0(0 оценок)
Ответ:
akrontsova
16.05.2023 02:48

Код:

using System;namespace ThisAnswerIsNotMine {    class Program    {        private static int a;        private static int b;        private static int c;        private static int d;        private static void Main()        {            int.TryParse(Console.ReadLine()!, out a);            int.TryParse(Console.ReadLine()!, out b);            int.TryParse(Console.ReadLine()!, out c);            int.TryParse(Console.ReadLine()!, out d);                        Console.WriteLine((a / c) * (b / d) >= (b / c) * (a / d) ? "Широкая" : "Узкая");        }    }}
Написать на С# Имеется стол прямоугольной формы размером а х b (а и b — целые числа, а > b). В ка
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота