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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2016, 20:17   #1
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
Вопрос C# Операции с матрицами (2d массивы)

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Console.WriteLine("Введите размерность матрицы: ");
            Console.Write("Введите кол-во строк матрицы: ");
            int m = Convert.ToInt32(Console.ReadLine()); //строки
            Console.Write("Введите кол-во столбцов матрицы: ");
            int n = Convert.ToInt32(Console.ReadLine()); //столбцы
            Console.WriteLine(" З А П О Л Н Е Н И Е ");
            int[,] arrMtrx = new int[m, n];
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    string s = Console.ReadLine();
                    arrMtrx[i, j] = int.Parse(s);
                }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", arrMtrx[i, j]);
                Console.WriteLine();
            }
            Console.ReadLine();


             int rxMax = arrMtrx[0, 0]; int maxRow = 0; int maxCol = 0;
             int rxMin = arrMtrx[0, 0];  int minRow = 0; int minCol = 0;
             for (int i = 1; i < m; i++)
                 for (int j = 1; j < n; j++)
                 {
                     if (arrMtrx[i, j] > rxMax) 
                     { 
                          
                         maxRow = i; maxCol = j; 
                         rxMax = arrMtrx[maxRow, maxCol];
                     }
                     if (arrMtrx[i, j] < rxMin) 
                     { 
                         minRow = i; minCol = j;
                         rxMin = arrMtrx[minRow, minCol]; 
                          
                     }
                 }
             Console.WriteLine("Max матрицы: a[" + maxRow + "," + maxCol + "]=" + rxMax);
             Console.WriteLine("Min матрицы: a[" + minRow + "," + minCol + "]=" + rxMin);
             Console.ReadKey();
   
        }

    }
}
Выводит неправильно:

поправьте, пож-та, что не так?
stodeer вне форума Ответить с цитированием
Старый 28.10.2016, 20:37   #2
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

А что не так?

Ну можешь написать перед выводом:

maxRow =maxRow+1;
maxCol = maxCol+1;

аналогично и для min.
ura_111 вне форума Ответить с цитированием
Старый 28.10.2016, 20:43   #3
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
Лампочка

Цитата:
Сообщение от ura_111 Посмотреть сообщение
А что не так?

Ну можешь написать перед выводом:

maxRow =maxRow+1;
maxCol = maxCol+1;

аналогично и для min.
-_- меня осенило. во всех массивах в шарпе счет номеров элементов начинается с 0.....
т. е. у "первой" строки - номер "0", у "второй" строки - номер "1"
глупо. Спасибо, ura_111.

Последний раз редактировалось stodeer; 28.10.2016 в 20:53. Причина: стоп, пока не удаляйте
stodeer вне форума Ответить с цитированием
Старый 28.10.2016, 21:00   #4
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
Вопрос ИНДЕКСЫ? не работает в сборном коде-солянке

часть кода моей л/р по проге (работа с массивами: ввод/вывод, max/min и т.п.)...
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace Array_Rang_2
{
    class Program
    {
        int[] intArray = null;
        int inputChoice = 0;
        int inputChoiceLength = 0;
        bool exit = true;

        //Ввод матрицы с клав-ы
        void inputMatrix(int[] args)
        {
            //Console.WriteLine("Введите размерность матрицы: ");
            Console.Write("Введите кол-во строк матрицы: ");
            int m = Convert.ToInt32(Console.ReadLine()); //строки
            Console.Write("Введите кол-во столбцов матрицы: ");
            int n = Convert.ToInt32(Console.ReadLine()); //столбцы
            Console.WriteLine(" З А П О Л Н Е Н И Е ");
            int[,] arrMtrx = new int[m, n];
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    string s = Console.ReadLine();
                    arrMtrx[i, j] = int.Parse(s);
                }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", arrMtrx[i, j]);
                Console.WriteLine();
            }
            Console.ReadLine();
        }

         // Max, Min матрицы // NE RABOTAET??!???
         void matrixMaxMin(int[] arrMtrx)
         {
             int rxMax = arrMtrx[0, 0]; int maxRow = 0; int maxCol = 0;
             int rxMin = arrMtrx[0, 0]; int minRow = 0; int minCol = 0;
             for (int i = 1; i < m; i++)
                 for (int j = 1; j < n; j++)
                 {
                     if (arrMtrx[i, j] > rxMax)
                     {
                         maxRow = i; maxCol = j;
                         rxMax = arrMtrx[i, j];
                     }
                     if (arrMtrx[i, j] < rxMin)
                     {
                         minRow = i; minCol = j;
                         rxMin = arrMtrx[i, j];

                     }
                 }
             maxRow = maxRow + 1; maxCol = maxCol + 1; minRow = minRow + 1; minCol = minCol + 1;
             Console.WriteLine("Max матрицы: a[" + maxRow + "," + maxCol + "]=" + rxMax);
             Console.WriteLine("Min матрицы: a[" + minRow + "," + minCol + "]=" + rxMin);
             Console.ReadKey();
         } 

        void menu()
        {
            .......................
        }

    }
}


в отдельном решении (что в топе темы), все работало. а если переписать этот код в метод, то нет.
что не так, подскажите?

Последний раз редактировалось stodeer; 28.10.2016 в 21:02. Причина: лишняя инфа
stodeer вне форума Ответить с цитированием
Старый 28.10.2016, 21:18   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

а массив arrMtrx то public"ом должен быть, а сейчас он privat, ну и M N иже с ним пабликом надо делать
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.10.2016, 21:22   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Не, не так просто. Я мог бы ответь, но лишать тебя радости открытия...

Скорей всего проблема в передачи 2-у мерного массива в функцию.

Изучи эту тему.... Просто в интернете задай: "передача в функцию 2-мерного массива шарп".


p.s.: но сначала, вот что сделай: попробуй передать в функцию не 2-х (как у тебя), а 1-о мерный массив и найти в нём мин/max (чисто в образовательный целях - потом исправишь код).
ura_111 вне форума Ответить с цитированием
Старый 28.10.2016, 21:58   #7
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
По умолчанию

Aleksandr H., что-то не пошло, к сожалению.

ura_111, эхех...
stodeer вне форума Ответить с цитированием
Старый 28.10.2016, 22:14   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

ну не пошло, так не пошло. Иди на гуманитария.
кста, почему inputMatrix масив 2д а в matrixMaxMin простой? Где main?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.10.2016, 22:22   #9
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Если бы ты попробовал одномерный массив передать в функцию (как я тебе советовал), то бы у тебя всё получилось (вот, смотри, в интернете нашёл):

13.jpg


Сопоставь со своим кодом... Теперь ты понимаешь в чём ошибка? Теперь ты можешь сказать что у тебя не так? Сделай вывод... Прочитай ещё раз мой предыдущий пост.

p.s.: поверь stodeer, я тебе зла не желаю, если я говорю: "поищи в интернете... это тема обсосана со всех сторон и найти информацию не составит труда" - значит так оно и есть... Пойми, тебе надо становиться на ноги; тебе надо пытаться решать проблемы (и не только свои, а ещё и, желательно, чужие)... Ну, ты же мужик! Если на таком простом ты опускаешь руки и "ждёшь пока тебе не покажут что не так", то что будет дальше...

Последний раз редактировалось ura_111; 28.10.2016 в 22:30.
ura_111 вне форума Ответить с цитированием
Старый 28.10.2016, 23:01   #10
stodeer
Пользователь
 
Аватар для stodeer
 
Регистрация: 23.10.2016
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
кста, почему inputMatrix масив 2д а в matrixMaxMin простой?
ok исправлено
Код:
void matrixMaxMin(int[,] arrMtrx)
Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Где main?
он дальше по коду, в задании требуется сделать меню
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace Array_Rang_2
{
    class Program
    {
        int[] intArray = null;
        int inputChoice = 0;
        int inputChoiceLength = 0;
        bool exit = true;
 
        //Ввод матрицы с клав-ы
        void inputMatrix(int[] args)
        {
            //Console.WriteLine("Введите размерность матрицы: ");
            Console.Write("Введите кол-во строк матрицы: ");
            int m = Convert.ToInt32(Console.ReadLine()); //строки
            Console.Write("Введите кол-во столбцов матрицы: ");
            int n = Convert.ToInt32(Console.ReadLine()); //столбцы
            Console.WriteLine(" З А П О Л Н Е Н И Е ");
            int[,] arrMtrx = new int[m, n];
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++)
                {
                    string s = Console.ReadLine();
                    arrMtrx[i, j] = int.Parse(s);
                }
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < n; j++)
                    Console.Write("{0:d} ", arrMtrx[i, j]);
                Console.WriteLine();
            }
            Console.ReadLine();
        }
 
       /*  // Max, Min матрицы // NE RABOTAET??!???
         void matrixMaxMin(int[] arrMtrx)
         {
             int rxMax = arrMtrx[0, 0]; int maxRow = 0; int maxCol = 0;
             int rxMin = arrMtrx[0, 0]; int minRow = 0; int minCol = 0;
             for (int i = 1; i < m; i++)
                 for (int j = 1; j < n; j++)
                 {
                     if (arrMtrx[i, j] > rxMax)
                     {
                         maxRow = i; maxCol = j;
                         rxMax = arrMtrx[i, j];
                     }
                     if (arrMtrx[i, j] < rxMin)
                     {
                         minRow = i; minCol = j;
                         rxMin = arrMtrx[i, j];
 
                     }
                 }
             maxRow = maxRow + 1; maxCol = maxCol + 1; minRow = minRow + 1; minCol = minCol + 1;
             Console.WriteLine("Max матрицы: a[" + maxRow + "," + maxCol + "]=" + rxMax);
             Console.WriteLine("Min матрицы: a[" + minRow + "," + minCol + "]=" + rxMin);
             Console.ReadKey();
         } */
 
               //................................. ................................. .................................
 
        //static void menu()
        void menu()
        {
            while (exit)
            {
                Console.SetCursorPosition(1, 1);
                Console.BackgroundColor = ConsoleColor.DarkMagenta;
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write("Выберите опцию: ......");
                Console.ResetColor();
                inputChoice = Convert.ToInt32(Console.ReadLine());
                //Console.WriteLine("inputChoice = " + inputChoice);
                switch (inputChoice)
                {
                    case 1: readArray(intArray);
                        break;
                    case 2: inputArray(intArray);
                        break;
                    case 3: maxMin(intArray);
                        break;
                    case 4: sumArray(intArray);
                        break;
                    case 5: newEven(intArray);
                        break;
                    case 6: sort(intArray);
                        break;
                    case 7: inputMatrix(intArray);
                        break;
                    case 8: matrixMaxMin(intArray);
                        break;
                    case 0: exit = false;
                        break;
                }
                if (exit == true)
                {
                    Console.WriteLine("Нажмите любую клавишу для продолжения...");
                    Console.ReadKey();
                }
                Console.Clear();
            }
        }
 
        static void Main(string[] args)
        {
            int i = 1;
            i++;
            //menu();
            Program p = new Program();
            p.menu();
        }
    }
}
Цитата:
Сообщение от ura_111 Посмотреть сообщение
Вложение 84178
Сопоставь со своим кодом... Теперь ты понимаешь в чём ошибка? Теперь ты можешь сказать что у тебя не так? Сделай вывод...
вывод в том, что мною не было предоставлено достаточно кода. мною не было добавлено, что static Main используется далее в коде (выше^).
дело еще в том, что это лаб/работа, в которой все операции с массивами должны быть написаны в одной проге с кучей методов.
башка кипит.
Спасибо, что не проходите мимо. буду разбираться еще.
stodeer вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
операции с матрицами Alexandr000006 Помощь студентам 6 26.07.2011 14:34
Операции с матрицами . Alex_sim Общие вопросы .NET 11 24.04.2010 21:18
Операции с матрицами. Делфи nevnuff Помощь студентам 2 21.12.2009 13:03
C#: операции с матрицами Sianessa Помощь студентам 12 13.05.2009 22:22