Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221

Add to array & loop

27.09.2011, 08:46. Показов 2507. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ДОбрый день, может кто подскажет:

задан стринговый массив, я конвертирую его в int
сортирую его
необходимо его разделить на N маленьких массивов удовлетворяющих условиям

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
private void button1_Click(object sender, EventArgs e)
        {
            int[] IrgsValues = Array.ConvertAll<string, int>(rgsValues, int.Parse);
            int max = IrgsValues[0];
            int min = IrgsValues[0];
            for (int i = 0; i < IrgsValues.Length; i++)
            {
                if (IrgsValues[i] < min)
                    min = IrgsValues[i];
                if (IrgsValues[i] > max)
                    max = IrgsValues[i];
            }
 
            NumberOfBars = 4;
            double clW = Convert.ToDouble((max - min) / NumberOfBars);
            Array.Sort(IrgsValues);
            
            int[] IrgsValues1 = new int[10];
            int[] IrgsValues2 = new int[IrgsValues.Length];
            int[] IrgsValues3 = new int[IrgsValues.Length];
            int[] IrgsValues4 = new int[IrgsValues.Length];
 
            for (int i = 0; i < IrgsValues.Length; i++)
            {
                if (IrgsValues[i] >= min && IrgsValues[i] <= min + clW)
                {
                    
                    IrgsValues1.Add(IrgsValues[i]);
                }
            }
            for (int i = 0; i < IrgsValues.Length; i++)
            {
                if (IrgsValues[i] > min + clW && IrgsValues[i] <= min + 2clW)
                {
                    
                    IrgsValues2.Add(IrgsValues[i]);
                }
            }
            for (int i = 0; i < IrgsValues.Length; i++)
            {
                if (IrgsValues[i] > min + 2clW && IrgsValues[i] <= min + 3clW)
                {
                    
                    IrgsValues3.Add(IrgsValues[i]);
                }
            }
           for (int i = 0; i < IrgsValues.Length; i++)
            {
                if (IrgsValues[i] > min + 3clW && IrgsValues[i] <= min + 4clW)
                {
                    
                    IrgsValues4.Add(IrgsValues[i]);
                }
            }
           .......
проблема что IrgsValues2.Add(IrgsValues[i]); - не работает
и вторая что я не знаю как сделать loop и не повторять эти проверки несколько раз

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.09.2011, 08:46
Ответы с готовыми решениями:

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' &amp; ''' &amp;...

ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка?
void Array::getArray() // вывод массива { for (int ix = 0; ix &lt; size; ix++) cout &lt;&lt; setw(5) &lt;&lt; ptr; // вывод элементов...

Loop & while programming
не все loop программы, можно применить к while программам,мжно ли написать loop программу которая рассчитывает while программа и чтобы loop...

9
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
27.09.2011, 10:12
GroupBy...
приведи конкретный пример массива и что в итоге должно получится
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
27.09.2011, 18:37  [ТС]
например я ввожу числа 10 12 15 5 16 18 19 17 9 11
мне нужно построить диаграмму из 4 столбиков
NumberOfBars = 4;
интервал (ширина) каждого столбика будет
double clW = Convert.ToDouble((max - min) / NumberOfBars); т.е 3.5
чтобы узнать высоту нужно узнать сначала сколько в каждом интервале будет значений
т.е. 1 от 5 до 8.5 {5}
интервал 2 от 8.5 до 12 {9 10 11 12}
интервал 3 от 12 до 15.5 {15}
интервал 4 0т 15.5 до 19 {16 17 18 19}

спасибо!
0
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
27.09.2011, 23:36
непонятно как идет включение на границах, в первом интервале у вас левая граница строгая - петерка входит, а во втором уже правая. У этих интервалов как мне кажется правая сторона должна быть строгая левая нет кроме последнего .... вот код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            double[] arr = { 10, 12, 15, 5, 16, 18, 19, 17, 9, 11 }; //вводимый массив
            int numberOfBars = 4; //количество столбиков
            double clW = (arr.Max() - arr.Min()) / numberOfBars;
            double[][] intervals = arr
                    .OrderBy(x => x)
                    .GroupBy((y) => 
                    { 
                         if (y != arr.Max()) return Math.Floor((y - arr.Min()) / clW); 
                         else return (numberOfBars - 1); 
                    })
                    .Select(x => x.ToArray())
                    .ToArray();
            for (int i = 0; i < intervals.Length; i++)
            {
                Console.WriteLine("Интервал {0} от {1:f2} до {2:f2}: {3}",i+1,arr.Min()+clW*i , arr.Min()+clW*(i+1), string.Join("; ",intervals[i]));
            }
            Console.ReadKey();
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
27.09.2011, 23:53  [ТС]
спасибо) теперь я поняла, что ничего не поняла
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.09.2011, 00:41
Вот пример по-проще, с комментариями.
Если какие-то вопросы возникнут, обращайтесь.

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
static void Main(string[] args)
{
    // Изначальный массив с данными
    int[] IrgsValues = { 10, 12, 15, 5, 16, 18, 19, 17, 9, 11, };
 
    // Находим наименьшее и наибольшее значения
    int min = IrgsValues.Min();
    int max = IrgsValues.Max();
 
    // Количество групп
    int NumberOfBars = 4;
 
    // Интервал значений в каждой группе. Рассчитываем разброс, делим его на количество групп и округляем до ближайшего целого.
    int clW = (int)Math.Round((double)( max - min ) / NumberOfBars, MidpointRounding.AwayFromZero);
 
    // Двумерный массив, содержащий отсортированные группы
    int[][] IrgsGroups = new int[NumberOfBars][];
 
    // Нижний предел интервала
    int start = 0;
 
    // Верхний предел интервала
    int end = min - (int)clW / 2 - 1;
 
    // Расчитываем интервалы групп и отбираем подходящие значения из массива
    for (int i = 0; i < NumberOfBars; i++) {
        // Нижний предел текущего интервала равен верхнему пределу предыдущего интервала, плюс один.
        start = end + 1;
 
        // Верхний предел текущего интервала равен нижнему пределу, плюс значение интервала.
        end = start + clW;
 
        Console.WriteLine("Interval {0}: [{1};{2}]", i + 1, start, end);
 
        // Эта строчка отбирает все числа, попадающие в только что рассчитанный интервал и копирует в массив интервалов
        IrgsGroups[i] = IrgsValues.Where(x => x >= start && x <= end).ToArray();
    }
 
    // Все готово. Теперь массив IrgsGroups содержит четыре элемента - группы. Каждая из групп содержит массив элементов, в нее попадающих.
    // Если, например, надо достать первый элемент второй группы, то мы обращаемся к массиву так: IrgsGroups[1][0]
 
    // Нижеследующий код выводит все сгруппрированные элементы в консоль. Каждая строчка - отдельная группа
    for (int i = 0; i < IrgsGroups.Length; i++) {
        Console.Write("Group {0}: ", i + 1);
        for (int j = 0; j < IrgsGroups[i].Length; j++)
            Console.Write("{0} ", IrgsGroups[i][j]);
        Console.WriteLine();
    }
}
1
 Аватар для WonderFlik
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
28.09.2011, 10:07
kolorotur, так неправильное статистическое распределение получается, крайние интервалы имеют меньшую вероятность попадания в них по сравнению с остальными

мой код тоже неправильный, ошибка возникает если в какой то интервал не попало ни одного значения, если нужно вечером поправлю
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
28.09.2011, 11:39
WonderFlik, согласен, меня это тоже всегда смущало.
Однако высчитывал по формуле нахождения границ интервалов для интервального вариационного ряда:
a0 = Xmin - h/2
aj = Xmax + h/2
где h - длина интервала.

Может кто более плотно статистикой занимается сможет подсказать где здесь собака порылась.

P.S. Что-то не вижу кнопочки редактора формул
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
28.09.2011, 13:44
Цитата Сообщение от kolorotur Посмотреть сообщение
Что-то не вижу кнопочки редактора формул
Ну не мелко же написано
Миниатюры
Add to array & loop  
1
28.09.2011, 15:12

Не по теме:

Цитата Сообщение от nio Посмотреть сообщение
Ну не мелко же написано
Жесть, вот жеж затупил. Спасибо!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.09.2011, 15:12
Помогаю со студенческими работами здесь

While loop & QtConcurrent - загрузка процессора > 100%
Вызываю в потоке функцию с бесконечным циклом, который так же в потоках вызывает другую функцию, в итоге вроде все работает, но...

ValueListEditor: Add & Delete
Выпадает ошибка. Подскажите, пожалуйста, как побороть. Спасибо! void __fastcall TForm1::Button2Click(TObject *Sender) { ...

В классе Array задайте метод add b , который будет добавлять к массиву почленно элементы массива...
Задание посвящено описанию вспомогательной функции. В классе Array задайте метод add b , который будет добавлять к массиву почленно...

error '80020009' &Icirc;&oslash;&egrave;&aacute;&ecirc;&agrave;. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error '80020009' ...

Помогите найти драйвера для pci\ven_8086&DEV_266E&SUBSYS_A002145&REV_05\3&13C0B0C5&0&F2
pci\ven_8086&amp;DEV_266E&amp;SUBSYS_A002145&amp;REV_05\3&amp;13C0B0C5&amp;0&amp;F2 Мультимедиа аудиоконтроллер помогите плз найти...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru