Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание windows-приложения на языке с# 
:(
    Опции темы
michal3003
  Дата 2.4.2012, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Сформировать матрицу A по правилу Aij=(2Bij + Bmin)/Bmax , где В - произвольно введенная матрица размером (m*n), Bmin - минимальный элемент матрицы B, Bmax - максимальный элемент матрицы B.
PM MAIL   Вверх
erm0l0v
Дата 2.4.2012, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Код

class Program
    {
        static void Main(string[] args)
        {
            Console.Write("n ->");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.Write("m ->");
            int m = Convert.ToInt32(Console.ReadLine());

            double[,] B = CreateRandomMatrix(n, m);
            double Bmin = FindElement(B, n, m, (find, matrix, i, j) => find > matrix[i, j]);
            double Bmax = FindElement(B, n, m, (find, matrix, i, j) => find < matrix[i, j]);
            double[,] A = ConvertMatrix(B, n, m, (matrix, i, j) => (2 * matrix[i, j] + Bmin) / Bmax);
            PrintMatrix(A, n,m);
            Console.ReadLine();
        }

        static double[,] CreateRandomMatrix(int n, int m)
        {
            Random random = new Random();
            double[,] result = new double[n, m];
            for (int i = 0; i < n; i++)
            {
                for(int j = 0; j < m; j ++)
                {
                    result[i, j] = random.NextDouble();
                }
            }
            return result;
        }

        static double FindElement(double[,] matrix, int n, int m, Func<double, double[,], int, int,bool> check)
        {
            double? find = null;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (find == null)
                        find = matrix[i, j];
                    else
                        if (check((double)find, matrix, i, j))
                            find = matrix[i, j];
                }
            }
            return (double)find;
        }

        static double[,] ConvertMatrix(double[,] matrix, int n, int m, Func<double[,], int, int, double> convertFunction)
        {
            double[,] result = new double[n, m];
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    result[i, j] = convertFunction(matrix, i, j);
                }
            }
            return result;
        }

        static void PrintMatrix(double[,] matrix, int n, int m)
        {
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write("{0}\t", matrix[i, j]);
                }
                Console.WriteLine();
            }
        }
    }

PM MAIL   Вверх
michal3003
Дата 3.4.2012, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



а как можно сделать в winforms???
PM MAIL   Вверх
erm0l0v
Дата 3.4.2012, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



В чем конкретно проблема? или вы даже не пытались реализовать задачу самостоятельно?

Вот так "выучат" программистов а потом все думают почему самолеты падают)))
PM MAIL   Вверх
michal3003
Дата 3.4.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Цитата(erm0l0v @ 3.4.2012,  11:35)
В чем конкретно проблема? или вы даже не пытались реализовать задачу самостоятельно?

Вот так "выучат" программистов а потом все думают почему самолеты падают)))

да нет, это не про меня)))на 1 кнопку ввожу данные первой матрицы,не могу сообразить как сделать на вторую кнопку реализовать вывод МАТРИЦЫ Aij по правилу........

PM MAIL   Вверх
erm0l0v
Дата 3.4.2012, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Ну вы можете вывести в таблицу "DataGridView" получится довольно красиво. Но если неохота заморачиваться с DataGrid можно вывести в TextBox или ListBox в этом случае вам нужно будет просто подготовить текст специального формата, с пробелами между числами.

По DataGridView вы найдете много информации в msdn, только обратите внимание что вам нужен DataGridView из WinForms а то вас поисковик может послать на DataGrid из WPF это не совсем что вам нужно.
PM MAIL   Вверх
michal3003
Дата 3.4.2012, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Цитата(erm0l0v @ 3.4.2012,  12:42)
Ну вы можете вывести в таблицу "DataGridView" получится довольно красиво. Но если неохота заморачиваться с DataGrid можно вывести в TextBox или ListBox в этом случае вам нужно будет просто подготовить текст специального формата, с пробелами между числами.

По DataGridView вы найдете много информации в msdn, только обратите внимание что вам нужен DataGridView из WinForms а то вас поисковик может послать на DataGrid из WPF это не совсем что вам нужно.

Сначала я задаю m & n, т.е. длину матрицы.Потом нажимаю кнопку сформировать data GV клеточками(размером m & n) для ввода данных.В первую data GV я ввожу данные матрицы B, как вывести с помощью второй кнопки по правилу (см. в условии задачи) матрицу А во вторую data GV.?????

Добавлено через 4 минуты и 21 секунду
Ну примерно что-то так....
PM MAIL   Вверх
erm0l0v
Дата 3.4.2012, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



То есть матрицу B вы сформировали, матрицу А посчитали осталось вывести?

Вы можете обратиться к строкам и столбцам DataGridView и задавать значения, а как вы это покажете в своем приложении зависит от вас, можно отобразить на том же DataDridView где у вас показана исходная матрица, но мне кажется будет удобнее если вы покажете и исходную и обработанную матрицу на двух DataGridView.
PM MAIL   Вверх
michal3003
Дата 3.4.2012, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.4.2012

Репутация: нет
Всего: нет



Цитата(erm0l0v @ 3.4.2012,  14:34)
То есть матрицу B вы сформировали, матрицу А посчитали осталось вывести?

Вы можете обратиться к строкам и столбцам DataGridView и задавать значения, а как вы это покажете в своем приложении зависит от вас, можно отобразить на том же DataDridView где у вас показана исходная матрица, но мне кажется будет удобнее если вы покажете и исходную и обработанную матрицу на двух DataGridView.

это понятно мне....

А как посчитать по формуле матрицу А???Как циклы сформировать правильно в программном коде,примерно???
PM MAIL   Вверх
erm0l0v
Дата 3.4.2012, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: нет
Всего: 1



Посмотрите мое первое сообщение там все есть.

Код

double Bmin = FindElement(B, n, m, (find, matrix, i, j) => find > matrix[i, j]);
double Bmax = FindElement(B, n, m, (find, matrix, i, j) => find < matrix[i, j]);


находим Bmin Bmax

Код

double[,] A = ConvertMatrix(B, n, m, (matrix, i, j) => (2 * matrix[i, j] + Bmin) / Bmax);


конвертируем матрицу.

Все что вам нужно считать матрицу B подсунуть её в этот код и показать полученную матрицу A.

Не пугайтесь переменных
Код

Func<double[,], int, int, double> convertFunction

это лямбда выражения (функции). Запись выше показывает что в качестве параметра хотим видеть функцию которая принимает значения double[,], ini, int и возвращает double.
В коде лямбда выражение будет использоваться как обычная функция:

Код

result[i, j] = convertFunction(matrix, i, j);


а объявляется выражение так:
Код

(matrix, i, j) => (2 * matrix[i, j] + Bmin) / Bmax


здесь у нас Bmin и Bmax это просто переменные которые должны быть объявлены выше.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1202 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.