Славік (РФФ КІ)

Славік (РФФ КІ)

Повідомлення Streat » 10 лютого 2011, 22:32

Задача:
Дана квадратна матриця порядку M. Знайти суми елементів її діагоналей, паралельних:
1) головній;
2) побічній (починаючи з одноелементарної діагоналі а) А[1,M]; b) A[1,1]).

ПіСі:
Обробку масивів в обох частинах програми треба проводити за допомогою методів, які за потреби отримують та повертають відповідні параметри (введення та виведення масивів також через методи). Змінні, визначеня на рівні класу, використовувати не можна. Метом Main() повинем містити лише загальну логіку програми та виклик спеціальних методів.
Streat
 
Повідомлень: 3
З нами з: 10 лютого 2011, 22:23

Re: Славік (РФФ КІ)

Повідомлення Василь » 11 лютого 2011, 01:15

Код: Виділити все
using System;
using System.Collections.Generic;
using System.Text;

namespace slavik_matrix
{
    class Program
    {
//=======================================================================================
        static int enter_mas(double [,]mas)
        {// метод спрашует размерность матрицы, заполняет масив и возвращает введенное зн. m
            int m;

            // РУЧНОЕ ЗАПОЛНЕНИЕ МАСИВА
           
            Console.Write(" Vvedite razmernost masiva [m x m]; m = ");
            m =Convert.ToInt32(Console.ReadLine());
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    Console.Write(" -> mas[ {0} x {1} ] = ",i,j);
                    mas[i, j] = Convert.ToInt32(Console.ReadLine()); ;
                }
            }
           
             // КОНЕЦ РУЧНОГО ЗАПОЛНЕНИЯ
             

            /*
            // АВТОМАТИЧЕСКОЕ ЗАПОЛНЕНИЕ
            m = 4;
           
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    mas[i, j] = (i + 1) * 10 + (j + 1);   
                }
                Console.WriteLine();
            }
            // КОНЕЦ "АВТОМАТИЧЕСКОЕ ЗАПОЛНЕНИЕ"
 
            */
            return m;
        }
//=======================================================================================
        static void print_mas(double[,] mas,int m)
        {// функция выводит на экран масив размерностью m
            Console.Write("\n*****************************\n PRINT MAS \n*****************************\n");           
            for (int j = 0; j < m; j++)
            {
                for (int i = 0; i < m; i++)
                {
                    Console.Write("{0}\t", mas[i, j]);
                }
                Console.WriteLine();
            }
            Console.Write("\n*****************************\n END OF PRINT MAS \n*****************************\n");
            return;
        }

//=======================================================================================
        static void mas_sum_master(double[,] mas, int m)
        { // подсчет суммы по гл. диагоналях
            Console.WriteLine("\nA) Glavnaya diagonal\n");
            if (m<=2){
                Console.WriteLine("ERROR! NE4EGO SCHITAT!!!\n");
                return ;
            }

            // пробежка по 1,M; 1,M-1...M,1 и т.д.... и ДО главной диагонали
            // т.е. пробежка от правого верхнего до главной диагонали
            for (int i = m - 1; i > 0; i--)
            {
                double sum = 0;
                Console.Write("1 -> ");
                for (int j = 0; j < m - i; j++)
                {
                    Console.Write("{0}\t",mas[i+j,j]);
                    sum += mas[i + j, j];
                }
                Console.WriteLine(" \t+=>{0}",sum);// вывод суммы по диагонали
            }
            // пробежка по 2,1..M-1,m.... и до левого нижнего
            // пробежка от главной диагонали до левого нижнего
            for (int i = 1; i < m  ; i++)
            {
                double sum = 0;
                Console.Write("2 -> ");
                for (int j = 0; j < m - i; j++)
                {
                    Console.Write("{0}\t", mas[j, i + j]);
                    sum += mas[j, i + j];
                }
                Console.WriteLine(" \t+=>{0}", sum);// вывод суммы по диагонали
            }           
            return;
        }
//=======================================================================================
        static void mas_sum_slave(double[,] mas, int m)
        {// подсчет суммы по побичный диагонали
            Console.WriteLine("\nB) Pobi4na diagonal\n");
            if (m <= 2)
            {
                Console.WriteLine("ERROR! NE4EGO SCHITAT!!!\n");
                return;
            }

            // Пробежка от левого верхнего до побичной диагонали
            for (int j = 0 ; j < m-1; j++)
            {
                double sum = 0;
                Console.Write("3 -> ");
                for (int i = 0; i <= j ; i++)
                {
                    Console.Write("{0}\t", mas[i, j-i]);
                    sum += mas[i, j - i];
                }
                Console.WriteLine(" \t+=>{0}", sum);// вывод суммы по диагонали
            }
            // пробежка от побичной диагонали к правому нижмему
            for (int i = 1; i < m ; i++)
            {
                double sum = 0;
                Console.Write("4 -> ");
                for (int j = 0; j <m-i ; j++)
                {
                    Console.Write("{0}\t", mas[i + j, m - j - 1]);
                    sum += mas[i + j, m - j - 1];
                }
                Console.WriteLine(" \t+=>{0}", sum);// вывод суммы по диагонали
            }
            return;
        }
        //=======================================================================================
        static void Main(string[] args)
        {
            const int maxi = 100; // максимальное количество елементов в масиве, которое вобще может быть ;)
            double[,] mas = new double[maxi, maxi]; // создаем масив, размерностью maxi на maxi
            int m; // введенное пользователем размерность матрицы

            m = enter_mas(mas);
            print_mas(mas, m);
            mas_sum_master(mas, m);
            mas_sum_slave(mas, m);
            Console.WriteLine("\n\n:DONE");
            Console.ReadKey();
        }
    }
}
Аватар користувача
Василь
 
Повідомлень: 907
З нами з: 15 жовтня 2010, 02:08


Повернутись до Флуд

Хто зараз онлайн

Зараз переглядають цей форум: Немає зареєстрованих користувачів і 4 гостей

cron