0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
1

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

08.02.2017, 01:24. Показов 18763. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача следующая.
Создать приложение которое предлагает пользователю задать размер линейного массива, заполняет автоматически этот масив случайными целыми числами в диапазоне с - 50 до 70. Выводит элементы этого массива, потом по выбору пользователя определяет а)суму минимального позитивного элемента массива и его номер;
б) суму парных элементов массива в диапазоне [-20: 30];
в) найти минимальный по модулю элемент массива
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
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 КУРСробота_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int[] Mas;
        public Random rnd = new Random();
        private void button1_Click(object sender, EventArgs e)
        {
            if (EditX.Text.Length > 0)
            {
                Mas = new int[int.Parse(EditX.Text)];
                for (int i = 0; i < int.Parse(EditX.Text); i++)
                {
                    Mas[i] = rnd.Next(-50, 70);
                }
                string[] L = (from i in Mas select i.ToString()).ToArray();
                EditY.Text = string.Join("  ",L);
            }
            }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void button2_Click(object sender, EventArgs e)
        { 
// суму минимального позитивного элемента массива и его номер;
            if (checkBox1 != null)
            {
                int temp = 0;
                for (int i = 0; i < Mas.Length; i++)
                {
 
                    if (Mas[i] > 0)
                    { 
                        int c = Mas.Min();
                        temp = c + Mas[i];
                    }
                    
                }
                textBox3.Text = "" + temp.ToString();
            } 
// суму парных элементов массива в диапазоне [-20: 30]; 
            if (checkBox2 != null)
            {
                int sum = 0;
                for (int i = 0; i < Mas.Length; i++)
                {
                    if (Mas[i] >= -20 && Mas[i] <= 30)
                    {
                        if (Mas[i] % 2 == 0)
                        {
                            sum += Mas[i];
                        }
                    }
                }
                textBox4.Text = "" + sum.ToString(); 
//  найти минимальный по модулю элемент массива 
               if (checkBox3 != null) 
               { 
                   int min = Math.Abs(Mas[0]);
                   for (int i = 0; i < Mas.Length; i++)
                   {
                       if (Math.Abs(Mas[i]) <= Math.Abs(min))
                           min = Mas[i];
                   }
                   textBox5.Text = "" + min.ToString(); 
                }
            }
        }
    }
}
не получается реализовать вторую часть программы с 39 строки
Помогите пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2017, 01:24
Ответы с готовыми решениями:

Приложение Windows Forms работающие с массивами
Может кто-то подсказать видеоуроки по созданию клиентского приложения Windows Forms работающего с...

Работа с windows forms or others)
Например, у меня есть консольное приложение виндовс. Как сделать из него полноценное окно, где ...

Работа с Windows Forms
Здравствуйте, первый раз делаю forms приложение, и у меня возникла одна проблема. как мне...

Работа с формами в C# Windows Forms
Привет всем. У меня есть программа, которая выполняет определенные действия пошавого. То есть окна...

10
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
08.02.2017, 09:36 2
Со строки 42:
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < Mas.Length; i++)
                {
 
                    if (Mas[i] > 0)
                    { 
                        int c = Mas.Min();
                        temp = c + Mas[i]; //Зачем?
                    }
                    
                }
То есть мы берем первое положительное значение в массиве и складываем его с минимальным значением массива, это значение помещаем в temp, затем берем второе положит. значение, складываем с минимальным и перезаписываем temp. Но зачем?

У вас temp всегда будет содержать сумму минимального значения массива и последнего положительного элемента массива.
1
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
09.02.2017, 13:05  [ТС] 3
Цитата Сообщение от Harttman Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < Mas.Length; i++)
                {
 
                    if (Mas[i] > 0)
                    { 
                        int c = Mas.Min();
                        temp = c + Mas[i]; //Зачем?
                    }
                    
                }
тоесть мне нужно сделать следующие :
C#
1
2
3
4
5
6
7
 for (int i = 0; i < Mas.Length; i++)
 {
if (Mas[i] > 0)
 { 
 int c = Mas.Min()+Mas.Min();
 
 }
И почему у меня оно щитает даже если снят флажок?

Добавлено через 15 минут
Даже в таком случае выдает число с минусом
0
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
09.02.2017, 14:08 4
Потому что код срабатывает при условии, что
C#
1
CheckBox1 != null;
Тоесть, вы проверяете существует ли CheckBox1 или нет.
У чекбокса есть свойство Checked, которое возвращает true или false, в зависимости от того, поставили галку или нет. Используй это свойство.

А чтобы найти минимальное положительное значение в массиве, нужно организовать цикл так:
Если элемент отрицательный, переходим к следующему элементу
C#
1
if (mas [i]>0)
Нужно до цикла объявить временную переменную и присвоить ей значение максимального элемента массива. Проверить, не является ли максимальный элемент отрицательным (В таком случае в массиве нет положительных чисел)А в цикле сравнивать ее с каждым положительным элементом. Если элемент меньше, перезаписать значение временной переменной.

Добавлено через 22 минуты
В итоге должно получится так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 if (checkBox1.Checked)
            {
                int temp = Mas.Max();
                if(temp < 0)
                {
                 textBox3.Text = "В массиве нет положительных чисел";
                }
                else if (temp == 0)
                {
                 textBox3.Text = "Минимальное положительное число в массиве: 0";
                }
                else
                {
                        for (int i = 0; i < Mas.Length; i++)
                         {
                            if (Mas[i] > 0)
                                  { 
                                        if (Mas[i] < temp) temp = Mas[i]
                                  }
                  }
                textBox3.Text = temp.ToString();
            }
Добавлено через 18 минут
Вот рабочий вариант:

Кликните здесь для просмотра всего текста
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
if (checkBox1.Checked)
            {
                int temp = Mas.Max();
                if (temp < 0)
                {
                    textBox1.Text = "В массиве нет положительных чисел";
                }
                else if (temp == 0)
                {
                    textBox1.Text = "Минимальное положительное число в массиве: 0";
                }
                else
                {
                    for (int i = 0; i < Mas.Length; i++)
                    {
                        if (Mas[i] > 0 && Mas[i] < temp)
                        {
                           temp = Mas[i];
                        }
                    }
                 textBox1.Text = temp.ToString();
                }
                
            }
1
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
09.02.2017, 14:35  [ТС] 5
В вашем случае будет выводить только минимальное значение а мне надо суму минимальных
0
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
09.02.2017, 15:01 6
Судя по всему я так и не понял, что требуется.
Цитата Сообщение от Fedi@ Посмотреть сообщение
а)суму минимального позитивного элемента массива и его номер;
Нужна сумма минимального и его номера в массиве или сумма двух минимальных значений в массиве?
0
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
09.02.2017, 15:07  [ТС] 7
Цитата Сообщение от Harttman Посмотреть сообщение
Нужна сумма минимального и его номера в массиве или сумма двух минимальных значений в массиве?
Сума минимального позитивного элемента и его номера
0
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
09.02.2017, 15:13 8
Fedi@, а что если минимальное число 1, но оно сгенерировалось несколько раз?
1
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
09.02.2017, 15:26  [ТС] 9
Цитата Сообщение от Harttman Посмотреть сообщение
Fedi@, а что если минимальное число 1, но оно сгенерировалось несколько раз?
Теперь дошло, если минимальное число повторяєтся то програма его сумирует

Добавлено через 1 минуту
Если можете помогите пожалуйста с пунктом б) суму парных элементов массива в диапазоне [-20: 30];
0
69 / 69 / 28
Регистрация: 12.09.2013
Сообщений: 237
09.02.2017, 15:32 10
Цитата Сообщение от Fedi@ Посмотреть сообщение
Теперь дошло, если минимальное число повторяєтся то програма его сумирует
Суммирует с чем? Друг с другом? Или каждое повторяющиеся с его номером? Все так же не понятно
0
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 46
09.02.2017, 16:06  [ТС] 11
По ходу неа? Извини конечно..... но я не профи я только учусь
0
09.02.2017, 16:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2017, 16:06
Помогаю со студенческими работами здесь

работа с dataGridView в windows forms
здравствуйте! подскажите пожалуйста ,как сделать так, чтобы при изменении значения в ячейке...

Работа с текстом С++ Windows Forms
Известны данные о количесве осадков,выпавших за каждый день марта.Верно ли,что осадков не было 10...

Работа с таблицами в windows forms
Как запретить изменение ширины первого столбца (на скрине отмечено) и сделать ее фиксированной. И...

Работа с web Windows Forms
Как отправить что нибудь на какой нибудь сайт?Например сообщение исп средства Windows forms


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru