Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
4 / 4 / 0
Регистрация: 24.10.2011
Сообщений: 92
1

Выполнить декартово произведение (исправить код)

30.09.2012, 20:07. Показов 4243. Ответов 12
Метки нет (Все метки)

Вобщем имеем масив Х={1,2,3,4,5}(одномерный)
дальше мы должны выполнить декартово произведение
Х х Х={(1.1)(1,2)(1,3)(1,4)(1,5)(2,1)(2,2)(2,3)(2,4)(2,5)(3,1)(3 ,2)(3,3)(3,4)(3,5)(4,1)(4,2)(4,3)(4,5)(5,1)(5,2)(5,3)(5,4)(5 ,5)} получивший массив - двумерынй
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace Diskret__
{
    class Program
    {
 
        static void Main(string[] args)
        {
            int a = 1;
            int b = 2;
            int x = 3;
            int y = 4;
            int z = 5;
            var s1 = new[] { a, b ,x,y,z};
            var s2 = new[] {a,b, x, y, z };
            var product =
                from first in s1
                from second in s2
                select new[] { first, second };
 
            foreach (var elem in product)
                Console.WriteLine(elem);
 Console.ReadLine();
        }
    }
}
Вместо элементов почему то выводит строки с System.Int32[]
п.с. не могли бы помочь придумать алгоритм , что бы в новом массиве были только элементы удовлетворяющие условию x-y -чётное (деление на 2 без остатка)
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2012, 20:07
Ответы с готовыми решениями:

Выполнить декартово произведение
Вобщем имеем масив Х={1,2,3,4,5}(одномерный) дальше мы должны выполнить декартово произведение ...

Декартово произведение
Если есть некоторое множество элементов и мне надо вычислить количество подмножеств данного...

Декартово произведение
Добрый день помогите разобраться с задачей. " Вычислить координаты всех восьми соседей заданной...

Декартово произведение
A = {a,b,c} B={a,b,{c}} Я знаю, как декартово произведение множеств находится, но когда во...

12
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 20:09 2
C#
1
Console.WriteLine(elem[0] + " " + elem[1]);
Массив жеж.
0
4 / 4 / 0
Регистрация: 24.10.2011
Сообщений: 92
30.09.2012, 20:10  [ТС] 3
А можно чуть чуть поподробнее если не сложно=)
0
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 20:10 4
По второму вопросу:
C#
1
2
3
4
5
            var product =
                from first in s1
                from second in s2
                where s1 % 2 == 0 && s2 % 2 == 0
                select new[] { first, second };
1
4 / 4 / 0
Регистрация: 24.10.2011
Сообщений: 92
30.09.2012, 20:14  [ТС] 5
Ошибка 1 Оператор "%" не может применяться к операндам типа "int[]" и "int"
Ошибка 2 Оператор "%" не может применяться к операндам типа "int[]" и "int"

Добавлено через 1 минуту
Цитата Сообщение от kolorotur Посмотреть сообщение
По второму вопросу:
ругается на s1 % 2 и s2 % 2
0
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 20:16 6
Ой, это я затупил:
C#
1
2
3
4
5
            var product =
                from first in s1
                from second in s2
                where first % 2 == 0 && second % 2 == 0
                select new[] { first, second };
Пардон.
1
4 / 4 / 0
Регистрация: 24.10.2011
Сообщений: 92
30.09.2012, 20:25  [ТС] 7
т.е. тут именно над элементами производим операцию а там ты по ошибке над массивами пытался?

Прошу прощения , но это немного не то , (x-y) их разница должна быть чётной
я пробовал сделать
C#
1
 where (first-second) % 2 == 0
но он выводит лишние элементы именно 1.1 2.2 3.3 4.4 5.5 понятно что при деление 0\2 мы так же получим ноль , но как убрать их из нашего нового массива?

заранее благодарен
0
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 21:22 8
Цитата Сообщение от Dota_pro_Stalk Посмотреть сообщение
т.е. тут именно над элементами производим операцию а там ты по ошибке над массивами пытался?
Ага, переменные перепутал.

C#
1
2
3
4
5
6
            var product =
                from first in s1
                from second in s2
                let x = Math.Abs(second - first)
                where x > 0 && x % 2 == 0
                select new[] { first, second };
1
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.09.2012, 22:31 9

Не по теме:

При чем тут декартвово произведение и продукты? Или это модеры шалят?..



Добавлено через 10 минут
А вообще, зачем создавать 2 массива, если нам требуется только один? И линк зачем-то сложный, требуется же просто декартово произведение?..
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Linq;
 
namespace ConsoleApplication10
{
    class Program
    {
        static void Main()
        {
            var a = new[] {1, 2, 3, 4, 5};
            var b = from x in a
                    from y in a
                    select new {X = x, Y = y};
            foreach (var v in b)
                Console.Write("({0},{1}) ",v.X,v.Y);
            Console.ReadKey();
        }
    }
}
0
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 22:46 10
Цитата Сообщение от Psilon Посмотреть сообщение
линк зачем-то сложный, требуется же просто декартово произведение?
Последнее предложение в первом посте:
Цитата Сообщение от Dota_pro_Stalk Посмотреть сообщение
не могли бы помочь придумать алгоритм , что бы в новом массиве были только элементы удовлетворяющие условию x-y -чётное (деление на 2 без остатка)
0
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.09.2012, 22:51 11
kolorotur, ясно, а зачем модуль?
C#
1
2
3
4
var b = from x in a
        from y in a
        where ((x-y) & 1) == 0
        select new {X = x, Y = y};
А вообще, если автору нужно получить двумерный массив, то нужно без линка ручками это реализовать. Насколько я знаю, результат вычислений - IEnumirable<T>, который приводится только в одномерному масиву.
0
Эксперт .NET
15269 / 11570 / 3035
Регистрация: 17.09.2011
Сообщений: 19,357
30.09.2012, 23:14 12
Цитата Сообщение от Psilon Посмотреть сообщение
а зачем модуль?
Ну & с единицей - это так, "понты" для любителей с битами возиться
Традиционно четность модулем проверяют, да и вопросов дополнительных меньше будет.

Цитата Сообщение от Psilon Посмотреть сообщение
IEnumirable<T>, который приводится только в одномерному масиву.
В оригинальном авторском запросе не просто new, а new[], то есть на выходе получается перечисление маленьких одномерных массивов, что при вызове ToArray выльется в рваный массив (а-ля двумерный в этих ваших сях).
0
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
30.09.2012, 23:28 13
kolorotur, получается массив [1,1],[1,2],[1,3]...
то есть массив N*Nx2, а автору нужно получить, я так понимаю маассив точек NxN

Добавлено через 2 минуты
То есть, как вы правильно меня поправили (я хотел сделать, но точечку забыл )
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Linq;
 
namespace ConsoleApplication11
{
    class Program
    {
        static void Main()
        {
            var a = new[] { 1, 2, 3, 4, 5 };
            var b = from x in a
                    select new {A = 
                        from y in a
                        select new { X = x, Y = y }
                    };
            foreach (var v in b)
            {
                foreach (var p in v.A)
                    Console.Write("({0},{1}) ",p.X,p.Y);
                Console.WriteLine();
            }
            Console.ReadKey();
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2012, 23:28

Помощь в написании контрольных, курсовых и дипломных работ здесь.

декартово произведение
AxB=? A={пустое множество} B={{a},c}

Декартово произведение графов
Объясните пожалуйста декартово произведение графов(маленький пример). Перелопатил инет, расходятся...

Задание на декартово произведение
Приветствую. Помогите разобраться с заданием. Немного не понимаю суть этого декартового...

Декартово произведение множеств
Найти n-ю степень множества X=\{\{ \empty\}, y\}, если n=2


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.