Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 10.11.2013, 01:22   #1
_Lenn
Пользователь
 
Регистрация: 10.11.2013
Сообщений: 10
По умолчанию Не получается прописать строчку с инициализацией массива

Моя задача Кнопка1: вывожу массив, заполненный рандомными числами, размерностью, введенной с клавиатуры. Кнопка2: вывожу массив элементов, которые кратны 5 (и вывожу их количество - этот вывод еще не прописала).

ПРОБЛЕМА: не знаю как инициализировать полученный массив в обработке button2_Click

Код:
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 Project
{
    public partial class Form1 : Form
    {
        //private int[] mass;
        public Form1()
        {
            InitializeComponent();
 
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            textBox1_TextChanged();
 
        }
        private bool textBox1_TextChanged()
        {
            if (textBox1.Text.Length <= 0)
            {
                textBox1.Text = "";
                MessageBox.Show("Неправильное заполнение!", "Сообщение");
                return false;
            }
            else
                return true;
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1_TextChanged())
            {
                listBox1.Items.Clear();
                Random r = new Random();
                int[] mass = new int[Convert.ToInt32(textBox1.Text)];
                for (int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
                {
                    mass[i] = r.Next(1, 99);
                    listBox1.Items.Add(mass[i]);
                    //listBox1.Items.Add(i + 1 + ") " + mass[i]);
                }
 
            }
 
 
            }
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            listBox2.Items.Clear();
            //int[] mass = ;
            int count = 0; //количество кратных 5
            const int size = 100;
            int[] a = new int[size];
            for (int i = 0; i < Convert.ToInt32(textBox1.Text); i++)
            {
                if (mass[i] % 5 == 0)
                {
                    mass[i] = a[i];
                    count++;
                }
                listBox2.Items.Add(mass[i]);
 
            } 
            
 
        }
_Lenn вне форума Ответить с цитированием
Старый 10.11.2013, 10:09   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Ваша проблема в том, что область видимости массива mass ограничивается методом button1_Click и естественно в методе button2_Click его нет. Поэтому придется объявлять массив глобально на уровне класса.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 10.11.2013, 11:27   #3
_Lenn
Пользователь
 
Регистрация: 10.11.2013
Сообщений: 10
По умолчанию

Это я понимаю.
Когда я объявляю массив на уровне класса:

Код:
int[] mass = new int[Convert.ToInt32(textBox1.Text)];
, выдается ошибка на "textBox1"
_Lenn вне форума Ответить с цитированием
Старый 10.11.2013, 11:40   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

тут массив ваще не нужен
eval вне форума Ответить с цитированием
Старый 10.11.2013, 13:23   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,462
По умолчанию

Во первых метод Convert.ToInt32(textBox1.Text) сделайте по другому:
Код:
int ArraySize = 0;
if (!int.TryParse(textBox1.Text, out ArraySize))
{
  // ошибка преобразования проверьте значение  textBox1
return;
}
Длина никогда не может быть меньше нуля
Код:
if (textBox1.Text.Length <= 0)

потом проверьте полученное значение размера.
Чтобы было больше нуля.
Если больше то создаете массив.

массив у вас верно описан в классе Form1.
Уберите комментарии //private int[] mass;

Цитата:
Сообщение от _Lenn Посмотреть сообщение
Это я понимаю.
Когда я объявляю массив на уровне класса:

Код:
int[] mass = new int[Convert.ToInt32(textBox1.Text)];
, выдается ошибка на "textBox1"
На уровне класса объявите массив как int[] mass = null; А инициализацию проводите по нажатию вашей кнопке.

И работайте с этим глобальным массивом.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 10.11.2013 в 13:27.
WorldMaster вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается перевернуть наоборот строку символьного массива. Zaza7 Общие вопросы C/C++ 8 30.10.2012 13:40
Не получается составить массив чисел для массива букв TheKostarico Общие вопросы C/C++ 4 30.11.2011 14:47
Memo вывод массива в строчку atenon C++ Builder 4 13.03.2011 09:03
Проблема с инициализацией массива Catharsis Общие вопросы C/C++ 6 21.05.2010 13:25
проблемы с инициализацией графики Teksa Паскаль, Turbo Pascal, PascalABC.NET 4 06.10.2008 18:03