Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 28

Два min в одном цикле

08.10.2018, 16:45. Показов 754. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такая проблема, необходимо найти 2 минимальный, причем min1 должно быть четным, а min2 должно находится на расстоянии более чем 7 элементов. Причем ввод должен происходить в этом же цикле. У меня есть такой код, он работает правильно только в случае, когда min2 находится после min1, не могу исправить, чтоб работала в обе стороны(((

C#
1
2
3
4
5
6
7
8
9
10
11
           int j = 0;
            int n = int.Parse(Console.ReadLine());
            int [] k= new int [n];
            int min1 = 1001;
            int min2 = 1001;
            for (int i=0; i<n; i++)
            {
                k[i] = int.Parse(Console.ReadLine()); 
                if (k[i] < min1 && k[i] % 2 == 0) { min1 = k[i]; j = i; }
                if (k[i] < min2 && i-j > 7) min2 = k[i];
            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.10.2018, 16:45
Ответы с готовыми решениями:

Вычисление выражения в одном цикле
Дано действительное число x. Вычислить ((x-2)(x-4)(x-8)…(x-256))/((x-1)(x-3)(x-7)…(x-255)) . Здесь должен быть один цикл. Как это...

Обработка двухмерного массива в одном цикле
Здравствуйте. Интересует вопрос, каким образом можно вычислить индексы двухмерного массива по индексу одномерного. Допустим, есть массив...

Использование двух массивов в одном цикле foreach
Уважаемые форумчане! Пожалуйста, подскажите. Можно ли использовать два массива разного типа, т.е. две переменные по каждой из массива...

6
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
08.10.2018, 16:59
Вам вот прям кровь из носу нужно ОДНИМ ЦИКЛОМ? Просто для этого придется держать вспомогательную очередь из 7 позиций, в которую помещаете элементы ввода, которые на данной итерации не будут обрабатыватся для вычисления min2.
0
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 28
08.10.2018, 17:13  [ТС]
Ну, желательно, но если двумя, то нужно как можно меньше элементов в массиве перебирать. У меня не хватает ума(((
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,080
Записей в блоге: 2
08.10.2018, 17:43
Цитата Сообщение от zlatous Посмотреть сообщение
min2 должно находится на расстоянии более чем 7 элементов
На расстоянии от чего?

Добавлено через 2 минуты
Если я правильно понял, то надо найти минимальный чётный элемент.
И второй минимальный за исключением ближайших семи элементов (в обе стороны) от первого минимального.
Второй минимальны тоже чётный должен быть?

Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            int j = 0;
            int n = int.Parse(Console.ReadLine());
            int [] k= new int [n];
            int min1 = 1001;
            int min2 = 1001;
            for (int i=0; i<n; i++)
            {
                k[i] = int.Parse(Console.ReadLine()); 
                if (k[i] < min1 && k[i] % 2 == 0) { min1 = k[i]; j = i; }
            }
            for (int i=0; i<n; i++)
            {
                if (Math.Abs(j-i)>7) // Если расстояние больше семи
                if (k[i] < min2 ) min2 = k[i];
            }
0
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 28
08.10.2018, 17:53  [ТС]
на расстоянии от первого минимума, да это правильный вариант, но когда мы ищем второй минимум, мы опять перебираем весь массив, а этого не должно быть.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,080
Записей в блоге: 2
08.10.2018, 18:30
Цитата Сообщение от zlatous Посмотреть сообщение
на расстоянии от первого минимума, да это правильный вариант, но когда мы ищем второй минимум, мы опять перебираем весь массив, а этого не должно быть.
Нет, не все. В этом условии
C#
13
                if (Math.Abs(j-i)>7) // Если расстояние больше семи
Ближайшие элементы пропускаются.
Или Вы что-то иное имели ввиду?

Добавлено через 1 минуту
Или по условиям задачи надо обязательно сделать одним циклом?

Добавлено через 2 минуты
Одним циклом - будет наоборот излишнее усложнение.
1
296 / 125 / 106
Регистрация: 30.10.2015
Сообщений: 690
08.10.2018, 19:48
zlatous, попробуйте вот так:
C#
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
using System;
 
namespace ConsoleApp9
{
  class Program
  {
    static void Main(string[] args)
    {
      var array = new int[] { 1, 2, -3, -4000, -100, -200, -300, -400,-500, -600, -700, -100, 300, -100, -400, 10 };
 
      int firstMin = array[0];
      int secondMin = array[0];
 
 
      for (int i = 0; i < array.Length - 8; i++)
      {
        if (array[i] < firstMin && array[i] % 2 == 0)
        {
          secondMin = firstMin;
          firstMin = array[i];
        }
 
        if (array[i + 8] < secondMin && array[i + 8] != firstMin)
          secondMin = array[i + 8];
      }
 
 
      Console.WriteLine("First minimum: " + firstMin);
      Console.WriteLine("Second minimum: " + secondMin);
 
      Console.ReadLine();
    }
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2018, 19:48
Помогаю со студенческими работами здесь

В одном for - два цикла одновреммено
Эсть два масива. Водном масиве А,В,Д, в другом масиве Б,Г,Ж, надо вивести их как А,Б,В,Г,Д,Ж. На Java я би зделал примерно так. for(int...

Два проекта в одном(взаимодействие)
Как взаимодействовать с другим проектом? Если возможно. В проект WinForm я добавляю еще проект путем: файл - добавить - создать проект...

Два приложение на одном процессе
Ситуация такова запущен процесс, а от него два консольных окна как можно узнать запущено ли 1 и 2 приложение, с одним приложением делал...

Звук в два горла в одном приложении
Задача такова: Есть два MemoryStream в каждом находится по WAV-файлу (загружены из базы данных), нужно проигрывая первый звук по команде...

Как в одном проекте сделать два пространства имен?
сделал так. но выводит только то что в namespace Laba, a arifm не выводит в консоль using System; using System.Collections.Generic; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru