Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 19

Работа с массивом

06.03.2015, 08:08. Показов 1861. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, недавно начал учиться на шарпе. Задача простенькая но вызывает у меня проблему
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        int[] Mas = new int[11];
        int t = 0;
        int min = 0;
        int s = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            for (int i = 0; i < 11; i++)
            {
                
                if (Mas[min] > Mas[i])
                {
                    Mas[min] = Mas[i];
 
 
                }
                
                
            }
            t = Mas[min];
            Mas[min] = Mas[10];
            Mas[10] = t;
            for (int j =0; j<11; j++)
            {
                textBox2.Text += "Mas[" + Convert.ToString(j) + "] = "
                + Convert.ToString(Mas[j]) + Environment.NewLine;
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Random rand = new Random();
            textBox1.Text = "";
            for (int i = 0; i < 11; i++)
            {
                Mas[i] = rand.Next(-50, 50);
                textBox1.Text += "Mas[" + Convert.ToString(i) + "] = "
                    + Convert.ToString(Mas[i]) + Environment.NewLine;
            }
 
        }
 
    }
}
Находится минимальный элемент, затем его нужно поменять местами с последним.
Работает, все, но минимальный элемент дает свое число последнему, но сам при этом не меняется.
Подскажите что делаю не так?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2015, 08:08
Ответы с готовыми решениями:

Работа с массивом
Доброго времени суток всем дорогие друзья! Помоги разобраться создал массив 5 на 5 нарисовал его он состоит из 1 и 0, задача нужно...

Работа с текстовым массивом
вводится слово состоящая только из цифр и букв. например: про3547грам75787миро73вание3 нужно распечатать те группы цифр в которых цифра 7...

Работа с массивом контроллов
Господа, прошу объяснить мне как незнающему\непонимающему. Есть форма, на ней туча контроллов, ради оптимизации процесса хочу создать...

4
93 / 94 / 51
Регистрация: 19.06.2013
Сообщений: 323
06.03.2015, 10:19
Лучший ответ Сообщение было отмечено Legomegger как решение

Решение

Вы последний элемент ставите не на место минимального, а на первое место! Но это не беда.
Цитата Сообщение от Legomegger Посмотреть сообщение
Работает, все
Беда в том, что Ваша программа вообще работает не правильно. Объясняю: у Вас написано
C#
1
2
3
4
5
6
if (Mas[min] > Mas[i])
{
    Mas[min] = Mas[i];
 
 
}
А переменная min всегда равна нулю. Вот и получается, что когда Вы находите минимальный элемент массива, он сразу же записывается в массив с индексом min, то есть ноль, то есть в первый элемент.
Правильнее сделать так:
  1. Сначала выделим переменную для хранения минимального числа
    C#
    1
    
    int iMin;
  2. Присвоим ей первый элемент массива, т.к. на данный момент это минимальное число
    C#
    1
    
    iMin= Mas[0];
  3. Далее создадим переменную для хранения индекса минимального числа
    C#
    1
    
    int minIndex;
  4. Далее, в цикле, будем искать минимальный элемент, и если найдем, запишем его значение индекс в переменные
    C#
    1
    2
    3
    4
    5
    
    if (Mas[i] < iMin)  // Если текущий элемент меньше минимального числа
    {
        iMin = Mas[i];  // Запоминаем минимальное число
        minIndex = i;   // Запоминаем ИНДЕКС минимального числа
    }
  5. Ну а после всего этого, меняем местами элементы массива по такому принципу:
    C#
    1
    2
    3
    4
    5
    
    int temp;               // Создаем временную переменную
    temp = Mas[10];         // Записываем туда значение последнего элемента
    Mas[10] = iMin;         // В последний элемент записываем минимальное
    Mas[minIndex] = temp;   // А в элемент с ИНДЕКСОМ минимального записываем
                            // значение из временной переменной
Собственно, весь код:
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        int[] Mas = new int[11];
        //int t = 0;
        //int min = 0;
        //int s = 0;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
 
            int iMin = Mas[0];      // Изначально, минимальное - это первый элемент
            int minIndex = 0;       // У первого элемента индекс - ноль
 
            for (int i = 0; i < 11; i++)
            {
                if (Mas[i] < iMin)  // Если текущий элемент меньше минимального числа
                {
                    iMin = Mas[i];  // Запоминаем минимальное число
                    minIndex = i;   // Запоминаем ИНДЕКС минимального числа
                } 
            }
 
            int temp;               // Создаем временную переменную
            temp = Mas[10];         // Записываем туда значение последнего элемента
            Mas[10] = iMin;         // В последний элемент записываем минимальное
            Mas[minIndex] = temp;   // А в элемент с ИНДЕКСОМ минимального записываем
                                    // значение из временной переменной
 
            for (int j = 0; j < 11; j++)
            {
                textBox2.Text += "Mas[" + Convert.ToString(j) + "] = "
                + Convert.ToString(Mas[j]) + Environment.NewLine;
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Random rand = new Random();
            textBox1.Text = "";
            for (int i = 0; i < 11; i++)
            {
                Mas[i] = rand.Next(-50, 50);
                textBox1.Text += "Mas[" + Convert.ToString(i) + "] = "
                    + Convert.ToString(Mas[i]) + Environment.NewLine;
            }
 
        }
    }
}
1
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 19
06.03.2015, 20:08  [ТС]
огромнейшее спасибо за внятный ответ! добра вам
1
549 / 480 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
08.03.2015, 15:19
Находится минимальный элемент, затем его нужно поменять местами с последним.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Forms Code
{
 
       private void button1_Click(object sender, EventArgs e)
       {
         int n, n1, n2, t;
           n = ari.Min();      
            t = ari.Count();
              n1 = ari[t - 1];
               for (int i = 0; i < t; i++)
               {
                if (ari[i] == n)
                    n2 = i;
                }
                 ari[t - 1] = n;
                   ari[n2] = n1;
                    for (int i = 0; i < t; i++)
                      listBox1.Items.Add(ari[i]);// Это проверка
       }
 
}
0
1 / 1 / 0
Регистрация: 28.02.2014
Сообщений: 19
08.03.2015, 18:27  [ТС]
прошу прощения еще раз, другая задача
Дан массив A целых чисел, содержащий 30 элементов. Вычислить и вывести сумму тех элементов, которые нечетны и отрицательны.
мой ход мыслей: нужно в массиве Mas, найти отрицательные и нечетные соответственно, затем выписать их в отдельный массив Mas1, и в нем уже суммировать. Так?
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace _13
{
    public partial class Form1 : Form
    {
        int[] Mas = new int[31];
        int sum;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Random rand = new Random();
            textBox1.Text = "";
            for (int i = 0; i < 31; i++)
            {
                Mas[i] = rand.Next(-50, 50);
                textBox1.Text += "Mas[" + Convert.ToString(i) + "] = "
                    + Convert.ToString(Mas[i]) + Environment.NewLine;
            }
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            textBox2.Text = "";
            
            
            int[] Mas1 = new int[31]; 
            
            for (int i = 0; i < 31; i++)
            {
                if ((Mas[i] % 2 != 0) || (Mas[i] < 0))
                {
                    Mas1[i] = Mas[i];
                    sum = (sum + Mas1[i]);
 
                }
                
            }
 
            textBox2.Text += "Mas[" + Convert.ToString(sum) + "] = "
                + Convert.ToString(sum) + Environment.NewLine;
 
            //for (int j = 0; j < 31; j++)
           // {
             //   textBox2.Text += "Mas[" + Convert.ToString(j) + "] = "
            //    + Convert.ToString(Mas[j]) + Environment.NewLine;
            //}
        }
    }
}
Выходит бяка
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2015, 18:27
Помогаю со студенческими работами здесь

Работа в цикле с массивом
Доброго времени суток. Есть цикл, в нем выполняются операции, в нем же идет еще один цикл, который проводит операции с элементами массива. ...

Работа с массивом Label
Добрый день. Я не так давно сел за С#, потому возникли вопросы. Есть массив данных, получаемых с прибора (а именно 16 float), которые...

Работа с двумерным массивом
Приветствую, нуждаюсь в вашей помощи! Проблема заключается в том, что нужно заменить расчетную характеристику в данном коде, сейчас здесь...

Работа с двухмерным массивом данных
Голова просто горит. Нужна ваша помощь!!! Также,во второй части необходимо создать блок-схему. КТО ПОМОЖЕТ - СТАВЛЮ НИК В РАМКУ ПЕРЕД...

Работа с двухмерным массивом данных
Всем привет. Нужна ваша помощь! Имеется такой код, на который нужно сделать отдельные кнопки, которые : &quot; Упорядочить заданную...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru