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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 13:52   #1
Nastassja.i
 
Регистрация: 06.11.2011
Сообщений: 8
По умолчанию Для каждого столбца найти произведение элементов с номерами от k1 до k2 и записать данные в новый массив

Здравствуйте) Не могли бы Вы помочь мне с задачкой...
Для каждого столбца найти произведение элементов с номерами от k1 до k2 и записать данные в новый массив. Для хранения массив n?n использовать ступенчатый массив.
Не много не понятно, этот интервал нужно вводить с клавиатуры и какие элементы перемножать, по строке или столбцу
Есть не большие наработки...

Код:
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication4
{
    class Class
    {
        static int[][] Input()
        {
            Console.WriteLine("Введите размерность массива");
            Console.Write("n = ");
            int n = int.Parse(Console.ReadLine());
            int[][] a = new int[n][];
            for (int i = 0; i < n; ++i)
            {
                a[i] = new int[n];
                for (int j = 0; j < n; ++j)
                {
                    Console.Write("a[{0},{1}]= ", i, j);
                    a[i][j] = int.Parse(Console.ReadLine());
                }
            }
            return a;
        }
        static void Print1(int[] a)
        {
            for (int i = 0; i < a.Length; ++i)
                Console.Write("{0,5} ", a[i]);
        }
        static void Print2(int[][] a)
        {
            for (int i = 0; i < a.Length; ++i, Console.WriteLine())
                for (int j = 0; j < a[i].Length; ++j)
                    Console.Write("{0,5} ", a[i][j]);
        }
 
        static int [] Pro(int[,] a, int k1, int k2)
        {
            int n = a.GetLength(0);
            int[] pro = new int[n];
            for (int i = 0; i < n; i++)
            {
                pro[i] = 1;
                for (int j = k1; j <= k2; j++)
                {
                    pro[i] *= a[j,i];
                }
            }
            return pro;
        }
        static void Main()
        {
            Console.Write("k1=");
            int k1 = int.Parse(Console.ReadLine());
            Console.Write("k2=");
            int k2 = int.Parse(Console.ReadLine());
            int[] [] myArray = Input();
            Console.WriteLine("Исходный массив:");
            Print2(myArray);
            int[] rez = new int[myArray.Length];
            for (int i = 0; i < myArray.Length; ++i)
                rez[i] = Pro (myArray[i]); 
            Console.WriteLine("Новый массив:");
            Print1(rez);
            Console.ReadKey();
        }
    }
}
но больше похоже на бред( помогите пожалуйста...
Nastassja.i вне форума Ответить с цитированием
Старый 14.12.2011, 15:31   #2
Nastassja.i
 
Регистрация: 06.11.2011
Сообщений: 8
По умолчанию

Как реализовать этот фрагмент для ступенчатого массива?
Код:
static int[] k1_k2(int[,] a, int k1, int k2)
        {
            int n = a.GetLength(0);
            int[] mas = new int[n];
            for (int i = 0; i < n; i++)
            {
                mas[i] = 1;
                for (int j = k1; j <= k2; j++)
                {
                    mas[i] *= a[j, i];
                }
            }
            return mas;
        }
Nastassja.i вне форума Ответить с цитированием
Старый 14.12.2011, 16:04   #3
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

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

namespace ConsoleApplication4
{
    class Class
    {
        static int[][] Input()
        {
            Console.WriteLine("Введите размерность массива");
            Console.Write("n = ");
            int n = int.Parse(Console.ReadLine());
            int[][] a = new int[n][];
            for (int i = 0; i < n; ++i)
            {
                a[i] = new int[n];
                for (int j = 0; j < n; ++j)
                {
                    Console.Write("a[{0},{1}]= ", i, j);
                    a[i][j] = int.Parse(Console.ReadLine());
                }
            }
            return a;
        }
        static void Print1(int[] a)
        {
            for (int i = 0; i < a.Length; ++i)
                Console.Write("{0,5} ", a[i]);
        }
        static void Print2(int[][] a)
        {
            for (int i = 0; i < a.Length; ++i, Console.WriteLine())
                for (int j = 0; j < a[i].Length; ++j)
                    Console.Write("{0,5} ", a[i][j]);
        }

        static int[] Pro(int[][] a, int k1, int k2)
        {
            int n = a.GetLength(0);
            int[] pro = new int[n];
            for (int i = 0; i < n; i++)
            {
                pro[i] = 1;
                for (int j = k1; j <= k2; j++)
                {
                    pro[i] *= a[j][i];
                }
            }
            return pro;
        }
        static void Main()
        {
            Console.Write("k1=");
            int k1 = int.Parse(Console.ReadLine());
            Console.Write("k2=");
            int k2 = int.Parse(Console.ReadLine());
            int[][] myArray = Input();
            Console.WriteLine("Исходный массив:");
            Print2(myArray);
            int[] rez = new int[myArray.Length];
            //for (int i = 0; i < myArray.Length; ++i)
                rez = Pro(myArray, k1, k2);
            Console.WriteLine("Новый массив:");
            Print1(rez);
            Console.ReadKey();
        }
    }
}
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 14.12.2011, 16:41   #4
Nastassja.i
 
Регистрация: 06.11.2011
Сообщений: 8
По умолчанию

Заработало) Спасибо, mrChester))
Только почему то ввожу я, k1=1, k2=2. А умножает он другие элементы. Должно быть вот так:
то есть, если вводиться размерность, например n=3, вводим элементы, предположим получается такая матрица:
2 3 4
1 4 6
6 4 1
Ввводим k1 и k2. Например k1=1, k2=2. В итоге должен получится массив: 2 12 24.
А он посчитал: 6 16 6
Nastassja.i вне форума Ответить с цитированием
Старый 14.12.2011, 16:49   #5
Nastassja.i
 
Регистрация: 06.11.2011
Сообщений: 8
По умолчанию

Ой, там же нумерация элементов с 0)
Nastassja.i вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для первого столбца и первой строки вычислить произведение положительных элементов. Katie Помощь студентам 4 13.01.2010 02:21
Вычислить и запомнить количество отрицательных элементов каждого столбца для матрицы A(10,10) , B (15,20) bitmania Помощь студентам 3 15.10.2008 01:06
Вычислить произведение элементов каждого столбца матрицы размерности n*n, находящаяся в строках ZmeI Помощь студентам 2 17.12.2007 22:43