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

Поиск целых чисел и манипуляции

26.10.2018, 17:12. Показов 6911. Ответов 59
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Передо мной задача, есть ряд рандомных чисел от 1 до 20 в строке, числа целые, через пробел
C#
1
string s = "5 16 12 3 7 14 10 25 4 3 21 5 16 8";
Далее при нажатии кнопки идет выпавшее число от 1 до 20 (это я сделал). К примеру нажал на кнопку 2 раза, выпали числа 5 и 16, они записываются уже в другую в строку
C#
1
string Word = "5 16"
через пробел. далее идет сравнение этих выпавших чисел string Word с заданной строкой string s. При совпадении мне должно отобразиться следующее число которое идет в заданной строке после 5 16, НО таких совпадений 2, и может быть больше двух, и оба этих числа (12 и 8 или более, зависит от количества совпадении) нужно пересчитать в %, т.е. если всего 2 числа то на каждое по 50%, если же у нас 3 последующих числа при совпадении 12 8 8, то тут уже должно просчитываться как 12 - 33%, 8 - 66% и так далее до бесконечности (поскольку начальных чисел у меня 25000). А так же вывести то число на экран в текст, у которого больше всего %. А если совпадении не найдено например после 5 случайных чисел, то string Word очищается. Моя проблема, я не знаю как правильно искать эту последовательность целых чисел через пробел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.10.2018, 17:12
Ответы с готовыми решениями:

Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очередь, квадратами целых чисел.
помогите, я в множествах не силен Из множества целых чисел 1..100 выделить множество чисел, являющихся, в свою очередь, квадратами...

Поиск наибольшего из двух целых чисел
поиск наибольшего (наименьшего) из двух целых чисел БЕЗ ИСПЛЬЗВАНИЯ УСЛОВНОГО ОПЕРАТОРА

Поиск числа в двухмерном массиве и манипуляции с ним
Нужно создать поиск и манипуляцию с цифрами в двумерном массиве по диагонали! Вот основа: array.GetLength(1); for(int = {...},...

59
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
29.10.2018, 22:49  [ТС]
Студворк — интернет-сервис помощи студентам
Повторюсь.

red - 1
yellow - 2 4 6 8 10 13 15 17 19 21 23 25
green - 3 7 11 16 20 24
blue - 5 12 14 22
purple - 9 18

и например в Value на данный момент числа 2 8 10 3 9. Каждое число привязано к группе. и после сортировки т.к. к группе yellow относится больше всего цифр, её то мне и должен показать outt.text = "yellow 40%" грубо говоря, ведь на каждое число тут приходится 20%

Добавлено через 56 секунд
Я не те группы имел в видууу)
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
29.10.2018, 22:57
Цитата Сообщение от ClowMiX Посмотреть сообщение
Повторюсь.
red - 1
yellow - 2 4 6 8 10 13 15 17 19 21 23 25
green - 3 7 11 16 20 24
blue - 5 12 14 22
purple - 9 18
Цвет - это определённая последовательность цифр. Эта последовательность задаётся в Word? Если да, а что за число мы извлекаем из другой последовательности?
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
29.10.2018, 23:02  [ТС]
это не последовательность, каждое число относится к одной из 5 групп, и на экран выводится та группа, числа которой чаще всего встречаются в Value
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
29.10.2018, 23:06
Цитата Сообщение от ClowMiX Посмотреть сообщение
это не последовательность, каждое число относится к одной из 5 групп, и на экран выводится та группа, числа которой чаще всего встречаются в Value
А эти последовательности
red - 1
yellow - 2 4 6 8 10 13 15 17 19 21 23 25
green - 3 7 11 16 20 24
blue - 5 12 14 22
purple - 9 18
Постоянны.
И надо определить в какую из них входит полученное число?

Добавлено через 50 секунд
Как заданы у Вас эти последовательности?
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
29.10.2018, 23:11  [ТС]
это не последовательности а группы, мог расписать и вот так
1 - red
2 - yellow
3 - green
4 - yellow
и т.д. это должно быть изначально как то указано, а после сортировки выводится та группа числа которой чаще всего встречаются в Value, и соответственно % группы, как я приводил пример в посте 41
0
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
29.10.2018, 23:21
Код не предназначен для использования и создавался в целях развлечения.

Кликните здесь для просмотра всего текста
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
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApp3
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] source = new int[] { 2, 3, 7, 5, 2, 3, 6, 7, 2, 3, 7, 2, 3 };
            int[] target = new int[] { 2, 3 };
 
            var items = MatchesIndices(source, target).Select(i => i + target.Length)                           //индексы искомых значений
                                                      .Where(ni => ni < source.Length)                          //защита от out of range (source оканчивается на target)
                                                      .Select(nif => source[nif])                               //сами значения
                                                      .GroupBy(val => val)                                      //группировка 
                                                      .Select(gr => new { Value = gr.Key, Count = gr.Count() });//{ значение, сколько раз встречается }
            foreach (var item in items)            
                Console.WriteLine($"{item.Value} : {item.Count}");            
 
            Console.ReadKey(true);
        }
 
        static IEnumerable<int> MatchesIndices<T>(T[] source, T[] target) where T : IComparable<T>
        {
            for (int i = 0; i <= source.Length - target.Length; i++)
            {
                for (int k = 0; k < target.Length; k++)                
                    if (!target[k].Equals(source[i + k]))
                        goto @continue_outer_loop;
 
                yield return i;
 
                @continue_outer_loop:;
            }
        }
    }
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
29.10.2018, 23:21
Из поста 41
Повторюсь.

red - 1
yellow - 2 4 6 8 10 13 15 17 19 21 23 25
green - 3 7 11 16 20 24
blue - 5 12 14 22
purple - 9 18

и например в Value на данный момент числа 2 8 10 3 9 ......

2 - это yellow
8 - yellow
10 - yellow
3 - green
9 - purple

Я так понял?
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
29.10.2018, 23:33  [ТС]
Элд Хасп да все верно
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
29.10.2018, 23:46
Таким образом возникает задача задания этих множеств иначе не понятно будет в чём искать.
Я предлагаю создать структуру такого типа
C#
1
2
3
4
5
public struct ColorList
{
       public string Name;
       public List<int> Numbers;
}
Тогда в коде мы сможем определить эти множества.

C#
1
2
3
4
5
List<ColorList> colorList = new List<ColorList>() 
{ 
    new ColorList() { Name = "purple", Numbers = new List<int>() {9, 18}},
//  ............. другие последовательности
}
Такое возможно?
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
29.10.2018, 23:54  [ТС]
ну получается остается вывести то имя списка, числа которого чаще встречаются в Value, так чтоли
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
30.10.2018, 00:06
Если мы создадим такую последовательность и у нас есть последовательность встречающихся чисел, то можем конвертировать одну в другую.
C#
1
var ValuesName = Values.Select(val => colorList.FirsrOrDefault(color => color.Numbers.IndexOf(val) >= 0).Name);
В результате у нас есть последовательность цветов.
Опять таки если я понял правильно что надо.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
30.10.2018, 00:17  [ТС]
Так, а это мне нужно засунуть ведь в void Start {} и не важно если числа будут через запятую верно? ведь опеделен список символов разделителей public static char[] Separators/* = "- , /\\\r\n"() <> ".ToCharArray()*/;

C#
1
2
3
4
5
6
7
Void Start () {
List<ColorList> colorList = new List<ColorList>() 
{ 
    new ColorList() { Name = "purple", Numbers = new List<int>() {9, 18}},
//  ............. другие последовательности
}
}
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
30.10.2018, 00:29
Цитата Сообщение от ClowMiX Посмотреть сообщение
не важно если числа будут через запятую верно? ведь опеделен список символов разделителей public static char[] Separators/* = "- , /\\\r\n"() <> ".ToCharArray()*/;
Да, могут быть через любой разделитель.
Цитата Сообщение от ClowMiX Посмотреть сообщение
Так, а это мне нужно засунуть ведь в void Start {}
Что-то я опять нить потерял. Что за Start и с чем его едят?

Добавлено через 5 минут
И комментарии уберите в определении, а то работать не будет
C#
1
char[] Separators = "- , /\\\r\n\"() <> ".ToCharArray();
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
30.10.2018, 00:31  [ТС]
Программа ведь на Unity, void Start {} это на сколько я понял функция которая запускается 1 раз при старте программы
char[] Separators = "- , /\\\r\n"() <> ".ToCharArray(); и так все прекрасно работает не знаю что тут нужно было убирать
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
30.10.2018, 00:34
Цитата Сообщение от ClowMiX Посмотреть сообщение
char[] Separators = "- , /\\\r\n"() <> ".ToCharArray(); и так все прекрасно работает не знаю что тут нужно было убирать
Похоже уже пошли большие разночтения между кодом в теме и тем что у Вас. Выложите этот участок ещё раз.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
30.10.2018, 00:38  [ТС]
С самого начала часть кода, а ниже продолжается потом код для взаимодействия мышки с объектами идет

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
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using System;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
 
 
public class MovingCube : MonoBehaviour
{
 
    public bool ReversY;
    private float NewY;
    private float PredY;
    private float InkY;
    int wordIndex = 1;
    public int Point = 1;
    public Text text1;
    public Text hod;
    public Text bd;
    public Text outt;
    public Text index;
    public Transform player;
    private string Word;
    private Vector2 MousePos;
 
    string numbers = "4 3 16 5 7 1 2 19 8 2 4 3 12 6 1 2 5 7 9 1 2 15 4 14 9 1 2 7 19 6 4 3 16 4 3 16";
 
    public static char[] Separators/* = "- , /\\\r\n\"() <> ".ToCharArray()*/;
 
    public void OnClick()
    {
        wordIndex = wordIndex + 1;
        Word = Word + Point.ToString() + " ";
        hod.text = Word;
 
        var SubStrings = numbers.Split(Separators, StringSplitOptions.RemoveEmptyEntries); // Разделение на подстроки
        List<int> ListNumbs = new List<int>(); // Подготовка нового списка целых чисел
        foreach (string subStr in SubStrings) // Цикл по подстрокам
        {
            int numb;
            if (int.TryParse(subStr, out numb)) // Проверка возможности преобразования подстроки в целое число
                    ListNumbs.Add(numb); // Если преобразование произошло, то запись результата в список.
        }
 
        SubStrings = Word.Split(Separators, StringSplitOptions.RemoveEmptyEntries); // Разделение на подстроки
        List<int> ListSeek = new List<int>(); // Подготовка нового списка целых чисел
        foreach (string subStr in SubStrings) // Цикл по подстрокам
        {
            int numb;
            if (int.TryParse(subStr, out numb)) // Проверка возможности преобразования подстроки в целое число
            ListSeek.Add(numb); // Если преобразование произошло, то запись результата в список.
        }
 
        bool IsCoincidence(IEnumerable<int> Source, IEnumerable<int> Target, int Index)
        {
            int count = Target == null ? 0 : Target.Count(); // Длина цели -  последовательность которую ищем
            if (count == 0) return true; // Если цели нет то возврат true
                                         // Если длины источника (в котором ищем) не хватает для поиска, возвращаем false 
            if (count + Index >= Source?.Count()) return false;
            for (int indAt = 0; indAt < count; indAt++) // Цикл для прохода по элементам последовательностей
                if (Source.ElementAt(Index + indAt) != Target.ElementAt(indAt)) // Проверка на равенство всех элементов
                    return false; // Если хоть один элемент не равен, то возвращаем false
            return true; // Если все элементы равны возвращаем true
        }
 
        List<int> CoincidenceValues(IEnumerable<int> Source, IEnumerable<int> Target)
        {
            if (Source == null) return null; // Проверка на null - на всякий случай.
            List<int> ret = new List<int>(); // Подготовка возвращаемого списка
            int sourceCount = Source.Count();
            int targetCount = (int)Target?.Count();
            for (int index = 0; index < sourceCount - targetCount; index++)
                if (IsCoincidence(Source, Target, index))
                    ret.Add(Source.ElementAt(index + targetCount));
            return ret;
        }
 
 
        List<int> Values = CoincidenceValues(ListNumbs, ListSeek);
        if (Values?.Count() > 0)
        {
 
            index.text = ($"Среднее значение {Values.Average()}"); // Вывод среднего
            var ValMax = Values.GroupBy(val => val).OrderBy(gr => gr.Count()).Reverse().ElementAt(0);
            foreach (var val in Values.GroupBy(val => val).OrderBy(gr => gr.Count()).Reverse())
            {
                outt.text = ($"Число {val.Key} встретилось - {val.Count()} раз, что составляет {((double)val.Count()) / Values.Count() * 100.0}% ");
            }
        }
 
 
 
 
        else Word = "";
        hod.text = Word;
 
 
 
 
    }
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
30.10.2018, 00:49
В этом коде Separators равен null и он будет определять только пробелы. Сделайте
C#
30
    public static char[] Separators = "- , /\\\r\n"() <> ".ToCharArray();
Добавлено через 3 минуты
Если последовательности определяющие цвет постоянны и нужны в разных местах, определите список colorList среди публичных переменных приложения.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
30.10.2018, 00:52  [ТС]
https://pp.userapi.com/c852028... jrCZo8.jpg - вот что он мне на это выдает, а там он не жалуется
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16444 / 11287 / 2892
Регистрация: 21.04.2018
Сообщений: 33,184
Записей в блоге: 2
30.10.2018, 00:58
Цитата Сообщение от ClowMiX Посмотреть сообщение
вот что он мне на это выдает, а там он не жалуется
Обратите внимание перед включенной кавычкой должен быть обратный слеш. Здесь на форуме порой они пропадают из сообщений.

Добавлено через 1 минуту
Между буквой n и кавычкой.
0
0 / 0 / 0
Регистрация: 26.10.2018
Сообщений: 31
30.10.2018, 01:21  [ТС]
Да теперь все верно. Я в общем на боковую, завтра продолжу. Еще раз Вам спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2018, 01:21

Поиск в массиве целых чисел из 5 элементов минимального числа
Составить программу для поиска в массиве целых чмсел из 5 элементов минимального числа

Поиск заданного числа в упорядоченном массиве целых чисел
Написать рекурсивную функцию, которая осуществляет поиск заданного числа в упорядоченном массиве целых чисел. Зарание спасибо :)

Реализовать бинарный поиск в динамическом массиве целых чисел
4)Реализовать бинарный поиск в динамическом массиве целых чисел

Реализовать последовательный поиск в динамическом массиве целых чисел
2)Реализовать последовательный поиск в динамическом массиве целых чисел.

Поиск заданного элемента в упорядоченном по возрастанию массиве целых чисел
Осуществить поиск заданного элемента в упорядоченном по возрастанию (по убыванию) массиве целых чисел.


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru