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

Формирования 3 массива с сохранением порядка следования

07.01.2014, 15:25. Показов 1460. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кликните здесь для просмотра всего текста
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
public class sorev 
{
    public string name;
    public int rezult;
    public sorev(string name, int rezult) 
    {
        this.name = name;
        this.rezult = rezult;
    }
} 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            /*5.    Лыжные гонки проводятся отдельно для двух групп участников (в каждой группе не более 50 человек).
             * Результаты соревнований за-даны в виде фамилий участников и их результатов в каждой группе.
             * Расположить результаты соревнований в каждой группе в порядке занятых мест.
             * Объединить результаты обеих групп с сохранением упорядоченности и вывести в виде таблицы с заголовком.*/
            int n = 3; int m = 3;
            sorev[] group1 = new sorev[n];
            sorev[] group2 = new sorev[m];
            sorev[] newgroup3 = new sorev[n + m];
            for (int i = 0; i < group1.Length; i++) 
            {
                Console.WriteLine("Введите имя спортсмена 1 группый");
                string name = Console.ReadLine();
                Console.WriteLine("Введите результат спортсмена 1 группы");
                int rez = int.Parse(Console.ReadLine());
                group1[i] = new sorev(name, rez);
            }
            for (int i = 0; i < group2.Length; i++)
            {
                Console.WriteLine("Введите имя спортсмена 2 группый");
                string name = Console.ReadLine();
                Console.WriteLine("Введите результат спортсмена 2 группы");
                int rez = int.Parse(Console.ReadLine());
                group2[i] = new sorev(name, rez);
            }
 
            for (int i = 0; i < group1.Length; i++) 
            {
                int imax = i;
                int amax = group1[i].rezult;
                for (int j = i + 1; j < group1.Length; j++) 
                {
                    if (group1[j].rezult > amax) 
                    {
                        amax = group1[j].rezult;
                        imax = j;
                    }
                }
                sorev temp;
                temp = group1[i];
                group1[i] = group1[imax];
                group1[imax] = temp;
            }
            
        for (int i = 0; i < group2.Length; i++)
            {
                int imax = i;
                int amax = group2[i].rezult;
                for (int j = i + 1; j < group2.Length; j++)
                {
                    if (group2[j].rezult > amax)
                    {
                        amax = group2[j].rezult;
                        imax = j;
                    }
                }
                sorev temp;
                temp = group2[i];
                group2[i] = group2[imax];
                group2[imax] = temp;
            }
            //код формирования 3 массива
//Объединить результаты обеих групп с сохранением упорядоченности и вывести в виде таблицы с заголовком
        int ig1 = 0; int ig2  =0;
        for (int k = 0; k < newgroup3.Length; k++) 
        {
            if (group1[ig1].rezult >= group2[ig2].rezult)
            {
                newgroup3[k] = group1[ig1];
                ig1++;
                if (ig1 > group1.Length)
                {
                    group1[group1.Length] = group2[ig2];
                }
            }
            else 
            {       newgroup3[k] = group2[ig2];
                    ig2++;
                    if (ig2 > group2.Length)
                    {
                        group2[group2.Length] = group1[ig1];
                    }
                }
            }
        
       
        
            for (int i = 0; i < group1.Length; i++)
                Console.WriteLine(group1[i].name + "    " + group1[i].rezult);
            Console.WriteLine();
            for (int i = 0; i < group2.Length; i++)
                Console.WriteLine(group2[i].name + "    " + group2[i].rezult);
            Console.ReadKey();
            Console.WriteLine();
            for (int i = 0; i < newgroup3.Length; i++)
                Console.WriteLine(newgroup3[i].name + "   " + newgroup3[i].rezult);
            Console.ReadKey();
        }
    }
}
Проблема заключается в формирования 3 массива, помогите исправить код
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2014, 15:25
Ответы с готовыми решениями:

В массиве, заполненном наполовину, продублировать все элементы с сохранением порядка следования
В массиве, заполненном наполовину, продублировать все элементы с сохранением порядка следования. Например, задан массив X=(3,8..), получить...

Дан символный файл f. Записать в файл g с сохранением порядка следования те символы файла f
C# Дан символный файл f.Записать в файл g с сохранением порядка следования те символы файла f. a)которым в этом файле предшествует буква...

Переписать с сохранением порядка следования компоненты файла f1 в файл f2, а компоненты файла f2 в файл f1
Помогите с заданием: Даны символьные файлы f1 и f2.Переписать с сохранением порядка следования компоненты файла f1 в файл f2, а компоненты...

7
320 / 280 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
07.01.2014, 16:08
Я не понимаю смысл задания: Объединить результаты обеих групп с сохранением упорядоченности и вывести в виде таблицы с заголовком.
Но проблема в коде тут:
C#
1
if (group1[ig1].rezult >= group2[ig2].rezult)
После того, как вы прошлись по какой-либо группе, индексатор, например ig2, выходит за пределы размера массива. И поэтому выходит ошибка. Если бы я понимал, что нужно сделать в задании, я бы помог...
0
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
08.01.2014, 07:22
Кликните здесь для просмотра всего текста
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
using System;
 
namespace CyberForumTasks
{
    public class Sorev
    {
        public string Name;
        public int Rezult;
 
        public Sorev(string name, int rezult)
        {
            Name = name;
            Rezult = rezult;
        }
    }
 
    class Program
    {
        private static void Main()
        {
            const int n = 2;
            const int m = 2;
            var group1 = new Sorev[n];
            var group2 = new Sorev[m];
            var newgroup3 = new Sorev[n + m];
            for (int i = 0; i < group1.Length; i++)
            {
                Console.WriteLine("Введите имя спортсмена 1 группый");
                string name = Console.ReadLine();
                Console.WriteLine("Введите результат спортсмена 1 группы");
                int rez = int.Parse(Console.ReadLine());
                group1[i] = new Sorev(name, rez);
            }
            for (int i = 0; i < group2.Length; i++)
            {
                Console.WriteLine("Введите имя спортсмена 2 группый");
                string name = Console.ReadLine();
                Console.WriteLine("Введите результат спортсмена 2 группы");
                int rez = int.Parse(Console.ReadLine());
                group2[i] = new Sorev(name, rez);
            }
 
            for (int i = 0; i < group1.Length; i++)
            {
                int imax = i;
                int amax = group1[i].Rezult;
                for (int j = i + 1; j < group1.Length; j++)
                {
                    if (group1[j].Rezult > amax)
                    {
                        amax = group1[j].Rezult;
                        imax = j;
                    }
                }
                Sorev temp = group1[i];
                group1[i] = group1[imax];
                group1[imax] = temp;
            }
 
            for (int i = 0; i < group2.Length; i++)
            {
                int imax = i;
                int amax = group2[i].Rezult;
                for (int j = i + 1; j < group2.Length; j++)
                {
                    if (group2[j].Rezult > amax)
                    {
                        amax = group2[j].Rezult;
                        imax = j;
                    }
                }
                Sorev temp = group2[i];
                group2[i] = group2[imax];
                group2[imax] = temp;
            }
            //код формирования 3 массива
            //Объединить результаты обеих групп с сохранением упорядоченности и вывести в виде таблицы с заголовком
            for (int i = 0; i < newgroup3.Length - n; i++)
            {
                newgroup3[i] = group1[i];
                newgroup3[i + n] = group2[i];
 
            }
 
            Console.WriteLine("**********Массив №1**********");
            foreach (var t in group1)
                Console.WriteLine(t.Name + "    " + t.Rezult);
            Console.WriteLine("**********Массив №2**********");
            foreach (var t in group2)
                Console.WriteLine(t.Name + "    " + t.Rezult);
            Console.WriteLine("**********Массив №3**********");
            foreach (var t in newgroup3)
                Console.WriteLine(t.Name + "    " + t.Rezult);
            Console.ReadKey();
        }
    }
}
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
08.01.2014, 15:54
Цитата Сообщение от Temirlan90 Посмотреть сообщение
C#
1
2
3
4
5
6
//код формирования 3 массива 
//Объединить результаты обеих групп с сохранением упорядоченности и вывести в виде таблицы с заголовком
 for (int i = 0; i < newgroup3.Length - n; i++) { 
    newgroup3[i] = group1[i]; 
    newgroup3[i + n] = group2[i]; 
}
А что будет в случае разных m и n, и соотвествеено разной длины массивов group1 и group2 ?
0
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
08.01.2014, 16:08
Цитата Сообщение от pycture Посмотреть сообщение
А что будет в случае разных m и n, и соотвествеено разной длины массивов group1 и group2 ?
Будет System.IndexOutOfRangeException
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
08.01.2014, 16:24
Цитата Сообщение от Temirlan90 Посмотреть сообщение
Будет System.IndexOutOfRangeException
при m = 1 , n = 5 не будет
0
 Аватар для Temirlan90
137 / 137 / 25
Регистрация: 30.09.2010
Сообщений: 333
09.01.2014, 07:01
Заменить цикл, поставить пару условий
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
for (int i = 0; i < newgroup3.Length; i++)
            {
                if (i < n)
                    newgroup3[i] = group1[i];
                
                if (i < m)
                    newgroup3[i + n] = group2[i];
            }
1
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
09.01.2014, 07:50
Цитата Сообщение от Temirlan90 Посмотреть сообщение
Заменить цикл, поставить пару условий
Цикл заменить надо, условия ставить не надо
Кликните здесь для просмотра всего текста

C#
1
2
Array.Copy(group1, 0, newgroup3, 0, n);
Array.Copy(group2, 0, newgroup3, n, m);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2014, 07:50
Помогаю со студенческими работами здесь

Изменение порядка следования итемов в menustrip
День добрый.может кто подскажет, как программно поменять порядок следования итемов в menustrip?в дизайнере я могу перетащить контрол, или в...

Изменения порядка следования элементов в массиве на противоположный
Дан одномерный массив, состоящий из n вещественных элементов. Составить программу для изменения порядка следования элементов в массиве на...

Перемещение элемента с сохранением порядка остальных элементов
Необходимо максимальный элемент массива поместить в конец массива, сохранив порядок остальных элементов. Заранее спасибо!

Составить программу для изменения порядка следования элементов в массиве на противоположный
Помогите, пожалуйста, дорогие форумчане. Дан одномерный массив, состоящий из n вещественных элементов. Составить программу для...

Изменение порядка следования элементов в массиве так, чтобы сначала располагались все отрицательные элементы,
Дан одномерный массив, состоящий из n элементов (для нечетных вариантов массив состоит из вещественных элементов, а для четных вариантов –...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru