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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 19:40   #1
odinaevdav
 
Регистрация: 31.08.2012
Сообщений: 4
Радость сумма ближайших элементов массива

подскажите пожалуйста, как складывать первый элемент со вторым, первый с третьим, первый с четвертым
потом: второй с третьим, второй с четвертым и последнее: третий с четвертым?

2 10 3
4 7 5
8 6 2
12 11 1

матрица станет квадратной, как программно добавить столбцы?
Код:
double[,] f = new double[dataGridView1.ColumnCount, dataGridView1.RowCount];
                    for (int i = 0; i < dataGridView1.ColumnCount; i++)
                    {
                        for (int j = 0; j < dataGridView1.RowCount; j++)
                        {
                                f[i,j] = Convert.ToDouble(dataGridView1.Rows[j].Cells[i].Value.ToString()) - Convert.ToDouble(dataGridView1.Rows[j+1].Cells[i].Value.ToString());
                                dataGridView1.Rows[j].Cells[i].Value = f[i, j];
                        }
                    }
odinaevdav вне форума Ответить с цитированием
Старый 24.02.2013, 19:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как складывать первый элемент со вторым, первый с третьим, первый с четвертым
В цикле:
Код:
for(int i=0;i<3;i++)
 for(int j=1;j<4;j++){
  ...=i+j;
 }
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2013, 20:44   #3
odinaevdav
 
Регистрация: 31.08.2012
Сообщений: 4
По умолчанию

у меня такой код, ничего не получается! Подскажите пожалуйста что делать?
Код:
double[,] f = new double[dataGridView1.ColumnCount, dataGridView1.RowCount];
                    for (int i = 0; i < dataGridView1.ColumnCount; i++)
                    {
                        int temp = 0;
                        for (int j = 0; j < dataGridView1.RowCount; j++)
                        {
                            if (j < dataGridView1.ColumnCount)
                            {
                                f[i, temp] = Convert.ToDouble(dataGridView1.Rows[j].Cells[i].Value.ToString()) - Convert.ToDouble(dataGridView1.Rows[j + 1].Cells[i].Value.ToString());
                                j++;
                                temp++;
                                dataGridView1.Rows[j].Cells[i].Value = f[i, j];
                            }
                        }
                    }
odinaevdav вне форума Ответить с цитированием
Старый 24.02.2013, 21:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты лучше скажи зачем это делаешь и куда потом результат помещать хочешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.02.2013, 22:43   #5
Демон
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
Стрелка

Если тебе нужно именно
0 с 1
0 с 2
0 .. N
1 c 2
1 c 3
...
То тебе внутренний цикл нужно начинать не с 1, а с i+1, а внешний брать от RowCount-1 То бишь со следующего после i элемента
Код:
for (int j = i + 1; j < dataGridView1.RowCount; j++)
А вообще, немного не понятно, что именно с чем вы хотите чтобы складывалось:
Цитата:
первый элемент со вторым,
в двумерных массивах элемент характеризуется двумя координатами x,y, а не одной. В общем, уточните, что хотите получить
Демон вне форума Ответить с цитированием
Старый 25.02.2013, 05:36   #6
odinaevdav
 
Регистрация: 31.08.2012
Сообщений: 4
По умолчанию

задача кластерного анализа. Элементы массива по вертикали нужно вычесть таким образом (в каждом столбце):
2 5 8
4 9 7
3 4 6

2-4 4-3, 5-9 9-4, 8-7 7-6 полученные результаты записать в новый массив, либо заполнить датагрид.
odinaevdav вне форума Ответить с цитированием
Старый 26.02.2013, 22:14   #7
Демон
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 17
Стрелка

C учетом предыдущего поста:
Код:
var matrix = new double[colCount,rouCount]; // оригинальный массив

// ... заполнение оригинального массива

var newMatrix = new double[colCount, rowCount - 1]; // массив с результатом
for (var c = 0; c < colCount; c++) // по колонкам
{
	for (var r = 0; r < rowCount - 1; r++) // по строкам
	{
		newMatrix[c, r] = matrix[c, r] - matrix[c, r + 1];
	}
}
Не знаю, насколько это то, что вам нужно
Демон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма элементов массива antojka C# (си шарп) 10 04.10.2011 00:23
Сумма и произведение элементов массива, удовлетворяющих условию (генерация float массива) felodese Помощь студентам 1 11.11.2010 20:52
Сумма элементов массива StudeHt Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.04.2010 11:30
C++. сумма элементов массива BzDoN Помощь студентам 3 01.12.2009 07:04