Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407

Выделить строку из массива

16.09.2016, 14:26. Показов 3947. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Ребята, подскажите, как из двумерного массива выделить строку для дальнейших математических операций со строкой, как с одномерным массивом?
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.09.2016, 14:26
Ответы с готовыми решениями:

Выделить строку
Всем ДД. Помогите правильно выделить строку с ошибкой в Edit Box. Я разбиваю строку на лексемы, если лексема не подходит под мои условия,...

Выделить строку
я пишу такое действие if not realiz.ADOQuery2.locate('shtr_cod',realiz.Edit3.Text,) then ShowMessage('Çàïèñü íå...

Выделить строку в ListBox
Приветствую. Есть ListBox "GamesListBox" со списком названий игр, есть Edit "Key_link" с название одной из игр. Нужно при нажатии...

15
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
16.09.2016, 21:53
Лучший ответ Сообщение было отмечено _Faradey как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
          int[,] matr = {
                    {1,  2,  3},
                    {4,  5,  6},
                    {7,  8,  9},
                    {10, 11, 12}
                };
            int nrow = 1;
            int [] row =new int[3] ;
            for (int i = 0; i < 3; i++)
                row[i] = matr[nrow, i];
1
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 09:25  [ТС]
Доброе утро! )
Здесь:
C#
1
2
3
4
5
6
7
8
9
10
int[,] matr = {
                    {1,  2,  3},
                    {4,  5,  6},
                    {7,  8,  9},
                    {10, 11, 12}
                };
            int nrow = 1; //Это номер строки?
            int [] row =new int[3] ; //Эт что за элемент - 3?
            for (int i = 0; i < 3; i++) // Тут, я так понимаю количество элементов <3
                row[i] = matr[nrow, i];
странно то, что при попытке вывести результат в textbox
C#
1
Tb_1.Text = row[i].ToString();
Выводит 6

У меня задача состоит в том, чтобы интерполировать между 1-й и 2-й строкой двумерного массива
0
 Аватар для BroDMax
157 / 156 / 104
Регистрация: 01.10.2015
Сообщений: 310
19.09.2016, 11:02
_Faradey,
C#
1
2
3
Tb_1.Clear();
for (int i = 0; i < 3; i++)
    Tb_1.Text += row[i].ToString() + " ";
Добавлено через 1 минуту
C#
1
2
3
4
int nrow = 1; // Это номер строки, начиная с нуля
int[] row = new int[3]; // Это новый массив, состоящий из трех элементов
for (int i = 0; i < 3; i++) // Тут, выводим элементы строки с нулевого до 3-го
    row[i] = matr[nrow, i];
1
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 11:04
Лучший ответ Сообщение было отмечено _Faradey как решение

Решение

int nrow = 1; //Это номер строки? - номер строки для вывода
int [] row =new int[3] ; //Эт что за элемент - 3? - это размер массива row
Выводит 6 - наверное у вас вывод производится с i = 2
чтобы интерполировать можно сделать так (примерно)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
       static void Main(string[] args)
        {
            int[,] matr = {
                    {1,  2,  3},
                    {4,  5,  6},
                    {7,  8,  9},
                    {10, 11, 12}
                };
            int nrow1 = 0;
            int nrow2 = 1;
            double[] row = new double[3];
            for (int i = 0; i < 3; i++)
                row[i] = (matr[nrow1, i] + matr[nrow2, i]) / 2.0 ;
 
            foreach (double element in row)
                {
                    Console.Write(element.ToString() + "\t ");
                }
            Console.ReadKey();
 
 
         }
1
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 14:05  [ТС]
Еще вопросик:
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
private void Btn_Eval_Click(object sender, EventArgs e)
        {
double a_1;
            double b_1;
            double x_1;
            double x_2;
            double y_1;
 
double[] mass; mass = new double[] { 1, 3, 6, 9, 12, 15, 18, 24, 40, 60, 100 };
            int n = 11;
            double[] z_1; z_1 = new double[] { 11.5, 11.5, 6.5, 5.4, 4.7, 4.3, 3.9, 3.3, 2.6, 2.1, 2 };
int Sol = 0;
            int sol = 0;
            double YSol = 0;
            double Ysol = 0;
            for (int i = 0; i < n - 1; i++)
            {
                if (mass[i] <= y_1 && mass[i] <= y_1)
                {
                    Sol = i;
                    sol = i + 1;
                }
a_1 = (Ysol - YSol) / (mass[sol] - mass[Sol]);
                b_1 = YSol - a_1 * mass[Sol];
                x_1 = a_1 * y_1 + b_1;
                x_1 = Math.Round(x_1, 2);
                x_2 = x_1 * y_1;
            }
}
Можно ли тут как-то это:
C#
1
2
3
double[] mass; mass = new double[] { 1, 3, 6, 9, 12, 15, 18, 24, 40, 60, 100 };
            int n = 11;
            double[] z_1; z_1 = new double[] { 11.5, 11.5, 6.5, 5.4, 4.7, 4.3, 3.9, 3.3, 2.6, 2.1, 2 };
Заменить на что-то типа:
C#
1
2
double[,] mass; mass = new double[,] { {1, 3, 6, 9, 12, 15, 18, 24, 40, 60, 100},
{ 11.5, 11.5, 6.5, 5.4, 4.7, 4.3, 3.9, 3.3, 2.6, 2.1, 2 } };
А то, что только не перепробовал, все никак)))
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 15:38
заменить можно только код придется исправить,
но у вас ошибка в коде, в 18 строке вы используете переменную y_1 которой не присвоено значение
1
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 15:49  [ТС]
А не подскажете, как исправить код
очень надо!!!!
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 16:01
_Faradey, я не очень понимаю что ваш код должен делать, может вы сможете это описать и пояснить последовательность вычислений
0
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 16:29  [ТС]
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
private void Btn_6_Click(object sender, EventArgs e)
        {
            if (Tb_7.Text == "")
            {
                MessageBox.Show("Введите количество \n квартир!", "EnergoLAB", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            double a_2;
            double b_2;
            double x_2;
            double y_2;
            double j_2;
            y_2 = Convert.ToDouble(Tb_7.Text); //вводим количество квартир
            double[] mass; mass = new double[] { 1, 5, 6, 9, 12, 15, 18, 24, 40, 60, 100, 200, 400, 600 }; //квартиры
            int n = 14;
            double[] z_1; z_1 = new double[] { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }; //нагрузка на количество квартир
//вычисление интерполяцией
            int Sol = 0;
            int sol = 0;
            double YSol = 0;
            double Ysol = 0;
            for (int i = 0; i < n - 1; i++)
            {
                if (mass[i] <= y_2 && mass[i] <= y_2)
                {
                    Sol = i;
                    sol = i + 1;
                }
                YSol = z_1[Sol];
                Ysol = z_1[sol];
                a_2 = (Ysol - YSol) / (mass[sol] - mass[Sol]);
                b_2 = YSol - a_2 * mass[Sol];
                x_2 = a_2 * y_2 + b_2;
                x_2 = Math.Round(x_2, 2);
                Tb_8.Text = (x_2).ToString(); //вывод результата
            }            
        }
Это кусок кода, суть такая в текстбокс Tb_7 вводится количество квартир, допустим 9
Далее вычисляется нагрузка на квартиру, при количестве 9 нагрузка 0.38
Если введенное количество квартир не совпадает с данными в массиве mass,
то вычисление нагрузки происходит методом интерполяцией.
Этот код рабочий, но суть вопроса заменить 2 одномерных массива
C#
1
2
mass = new double[] { 1, 5, 6, 9, 12, 15, 18, 24, 40, 60, 100, 200, 400, 600 }; //квартиры
z_1 = new double[] { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }; //нагрузка на количество квартир
на один двумерный
C#
1
Mass = new double[,] {{1, 5, 6, 9, 12, 15, 18, 24, 40, 60, 100, 200, 400, 600}, {1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11}}
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 16:36
заменить просто

C#
1
2
3
            double[,] mass = new double[,] 
          {{    1,    3,   6,   9,  12,  15,  18,  24,  40,  60, 100},
           { 11.5, 11.5, 6.5, 5.4, 4.7, 4.3, 3.9, 3.3, 2.6, 2.1, 2 } };
проблема в том что в дальнейшем mass[i] нужно везде заменить на что то типа mass[i , 1] так как массив mass становится двумерным
1
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 16:37  [ТС]
Это понятно ))
В этом собственно и вопрос, КАК? ))
Я уже задолбался ))
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 16:44
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
           double[,] mass = new double[,] 
            {{ 1, 5,    6,    9,   12,   15,   18,   24,  40,  60,   100,  200,  400, 600},
             { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }
             };
            int n = 14;
            double[] z_1; z_1 = new double[] { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }; //нагрузка на количество квартир
//вычисление интерполяцией
            int Sol = 0;
            int sol = 0;
            double YSol = 0;
            double Ysol = 0;
            for (int i = 0; i < n - 1; i++)
            {
                if (mass[i, 1] <= y_2 && mass[i, 1] <= y_2)
                {
                    Sol = i;
                    sol = i + 1;
                }
                YSol = z_1[Sol];
                Ysol = z_1[sol];
                a_2 = (Ysol - YSol) / (mass[sol,1] - mass[Sol,1]);
                b_2 = YSol - a_2 * mass[Sol,1];
                x_2 = a_2 * y_2 + b_2;
                x_2 = Math.Round(x_2, 2);
0
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 17:03  [ТС]
Я так пробовал )) только в строке
C#
1
a_2 = (Ysol - YSol) / (mass[sol,1] - mass[Sol,1]);
Необработанное исключение типа "System.IndexOutOfRangeException"
Индекс находился вне границ массива
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
19.09.2016, 17:13
Лучший ответ Сообщение было отмечено _Faradey как решение

Решение

_Faradey, пардон я наврал
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
            double[,] mass = new double[,] 
            {{ 1, 5,    6,    9,   12,   15,   18,   24,  40,  60,   100,  200,  400, 600},
             { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }
             };
            int n = 14;
            double[] z_1; z_1 = new double[] { 1, 1, 0.51, 0.38, 0.32, 0.29, 0.26, 0.24, 0.2, 0.18, 0.16, 0.14, 0.13, 0.11 }; //нагрузка на количество квартир
//вычисление интерполяцией
            int Sol = 0;
            int sol = 0;
            double YSol = 0;
            double Ysol = 0;
            for (int i = 0; i < n - 1; i++)
            {
//                if (mass[i, 1] <= y_2 && mass[i, 1] <= y_2)
                if (mass[0,i] <= y_2)
                {
                    Sol = i;
                    sol = i + 1;
                }
                YSol = z_1[Sol];
                Ysol = z_1[sol];
                a_2 = (Ysol - YSol) / (mass[0,sol] - mass[0,Sol]);
                b_2 = YSol - a_2 * mass[0,Sol];
                x_2 = a_2 * y_2 + b_2;
                x_2 = Math.Round(x_2, 2);
1
5 / 5 / 2
Регистрация: 13.10.2015
Сообщений: 407
19.09.2016, 17:19  [ТС]
Спасибо Вам добрый человек!!!!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.09.2016, 17:19
Помогаю со студенческими работами здесь

StringGrid выделить строку
Добрый день, нужна помощь и очень срочно. Условие задачи Дана целочисленная матрица. Конкретный размер задается списком ListBox...

Выделить строку ValueListEditor
Подскажите плиз!!! Есть ли возможность выделять строку в ValueListEditor? и как в программе указать что строчка выделена?

Выделить строку в DataGrid
Всем добрый вечер. В общем есть кусок кода, который добавляет ФИО в таблицу студентов. var selectedgroup =...

Выделить строку Stringgrid
Здраствуйте, можете подсказать, почему не выделяется нужная строка в данной программе. Я так понимаю, что ошибка где-то здесь: procedure...

Выделить строку в RichTextBox
Товарищи, приветствую. На форуме нашёл интересное решение по поиску и выделению строки в RichTextBox. Подскажите, пожалуйста, каким...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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 и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru