Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2015, 13:24   #1
bm1
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 11
По умолчанию Что не так?

Код:
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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Random r;
        int k, n;
        double[,] a, b, c;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button4_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            button1.Text = "Массив А";
            button2.Text = "Массив В";
            button3.Text = "Массив С";
            button4.Text = "Выход";
 
            checkBox1.Text = "Отладка"; 
            label1.Text = "Размер";
            label2.Text = "Точность";
            numericUpDown1.Value = 5;
            numericUpDown2.Value = 1;
 
            n = (int)numericUpDown1.Value;
            k = (int)numericUpDown2.Value;
            r = new Random();
            n = (int)numericUpDown1.Value;
            a=  new double [n, n];
            b = new double[n, n];
            c = new double[n, n];
 
            dataGridView1.ColumnCount = dataGridView1.RowCount = n;
            dataGridView2.ColumnCount = dataGridView2.RowCount = n;
            dataGridView3.ColumnCount = dataGridView3.RowCount = n;
 
            dataGridView1.ColumnHeadersVisible = false;
            dataGridView1.RowHeadersVisible = false;
            dataGridView2.ColumnHeadersVisible = false;
            dataGridView2.RowHeadersVisible = false;
            dataGridView3.ColumnHeadersVisible = false;
            dataGridView3.RowHeadersVisible = false;
 
            //
            for (int i = 0; i < n; i++) {
             dataGridView1.Columns[i].Width = Math.Max (dataGridView1.Width / n-1, 20);
             dataGridView1.Rows[i].Height = Math.Max(dataGridView1.Height / n-1, 20); 
             dataGridView2.Columns[i].Width = Math.Max (dataGridView2.Width / n-1, 20);
             dataGridView2.Rows[i].Height = Math.Max(dataGridView2.Height / n-1, 20); 
             dataGridView3.Columns[i].Width = Math.Max (dataGridView3.Width / n-1, 20);
             dataGridView3.Rows[i].Height = Math.Max(dataGridView3.Height / n-1, 20); 
        }
        }     
private void button1_Click(object sender, EventArgs e)
        {
n = (int)numericUpDown1.Value;
            k = (int)numericUpDown2.Value;
            a = new double[n, n];
            b = new double[n, n];
            c = new double[n, n];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                {
                    if ((checkBox1.Checked) && ((i == 1) | (j == 1))) a[i, j] = 1;
                    else a[i, j] = 0 + Math.Round(r.NextDouble(), k);
                }
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    dataGridView1[i, j].Value = a[j, i];
            //автоустановка размеров строк и столбцов
        }
        private void button2_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    b[i, j] = 0 + Math.Round(r.NextDouble(), k);
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    dataGridView2[i, j].Value = b[j, i];
        }
        private void button3_Click(object sender, EventArgs e)
        {
            {
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < n; j++)
                    {
                        c[i, j] = 0;
                     for (int t = 0; t < n; t++) c[i, j] = c[i, j] + a[i, t] * b[t, j];
                    }
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < n; j++)
                        dataGridView3[j, i].Value = c[i, j];
                // Нарисуем знаки умножения и равенства
                int h = dataGridView2.Top + dataGridView2.Height / 2 - 5;
                Graphics g;
                g = this.CreateGraphics();
                Pen PB3 = new Pen(Color.Blue, 2);
                g.DrawLine(PB3, dataGridView2.Right + 5, h, dataGridView2.Right + 20, h);
      g.DrawLine(PB3, dataGridView2.Right + 5, h + 10, dataGridView2.Right + 20, h + 10);
 
      g.DrawLine(PB3, dataGridView1.Right + 5, h, dataGridView1.Right + 20, h + 20);
      g.DrawLine(PB3, dataGridView1.Right + 20, h, dataGridView1.Right + 5, h + 20);
            }
        }
    }
}
Изображения
Тип файла: jpg WF.jpg (74.1 Кб, 125 просмотров)
bm1 вне форума Ответить с цитированием
Старый 29.05.2015, 13:25   #2
bm1
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 11
По умолчанию

Нужно задать элементы двух квадратных матриц n*n случайным образом и найти произведение матриц используя DataGridView для рисования.
Выше, то что я нашёл в лекциях

но выдаёт ошибку: Не удалось найти тип или имя пространства имен "Form1" (возможно, отсутствует директива using или ссылка на сборку).
Скрин формы прилагается
bm1 вне форума Ответить с цитированием
Старый 29.05.2015, 13:59   #3
bm1
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 11
По умолчанию

проблему решил.
Теперь программа запускается, но теперь при нажатии на Button1 выходит ошибка "Необработанное исключение типа "System.NullReferenceException" в WindowsFormsApplication5.exe
Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта."
и выделяет else a[i, j] = 0 + Math.Round(r.NextDouble(), k);
bm1 вне форума Ответить с цитированием
Старый 29.05.2015, 14:15   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Random r;
А ты его создал? Объект.
Вроде же этот метод не статический.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.05.2015, 14:17   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ставьте брекпоинт на эту строчку и смотрите какие значения у переменных, перед тем как всё валится.
pu4koff вне форума Ответить с цитированием
Старый 29.05.2015, 14:43   #6
bm1
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 11
По умолчанию

вот, значения i и j равны 0
Изображения
Тип файла: jpg 234.jpg (90.9 Кб, 130 просмотров)
bm1 вне форума Ответить с цитированием
Старый 29.05.2015, 14:52   #7
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

там еще участвуют r и r.NextDouble(). Можно мышу навести и значение вылезет или вбить их в контрольное значение.
pu4koff вне форума Ответить с цитированием
Старый 29.05.2015, 14:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Обьект Random создай.
Через New
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.05.2015, 15:00   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

он у него в Form_Load должен создаваться
pu4koff вне форума Ответить с цитированием
Старый 29.05.2015, 15:07   #10
bm1
Пользователь
 
Регистрация: 29.05.2015
Сообщений: 11
По умолчанию

уже сделал Random r = new Random();
Но теперь на строке dataGridView1[i, j].Value = a[j, i];
Выдаёт ошибку:
Необработанное исключение типа "System.ArgumentOutOfRangeException " в mscorlib.dll

Дополнительные сведения: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
bm1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так? Masafi PHP 2 22.01.2013 19:53
что не так? Карина 1578 Помощь студентам 2 27.12.2011 19:24
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06