Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 2
.NET 4.x

Создать случайно сгенерированную (рандомную) матрицу, сложить элементы выделенные в картинке

07.09.2014, 14:46. Показов 3546. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача:
Создать случайно сгенерированную (рандомную) матрицу n x n,
сложить элементы выделенные в данной картинке:

1 вариант:

1 2 * 4 5
2 * * * 6
* * * * *
4 * * * 8
5 6 * 8 9

2 вариант:

1 2 * 4 5
2 * 4 * 6
* 4 5 6 *
4 * 6 * 8
5 6 * 8 9

По 2 варианту есть наработки, но с небольшими недочетами: 0 и последний член тоже складывается...:
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
26
27
28
29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            int i, j, n;
            n = Convert.ToInt32(Console.ReadLine());
            int[,] matrix = new int[n, n];
            for (i = 0; i < n; ++i)
            {
                for (j = 0; j < n; ++j)
                {
                    matrix[i, j] = i + j;
                    if (i == j-n/2 ^ j == i-n/2 ) matrix[i, j] = 0;
                    if (i == j ^ j == i - n / 2 ^ i == j + n / 2) matrix[i, j] = 0;
                    Console.Write(matrix[i, j] + "\t");
                }
                Console.WriteLine();
            }
            Console.ReadLine();
        }
    }
}
Результат:

* 2 * 4 5
2 * 4 * 6
* 4 * 6 *
4 * 6 * 8
5 6 * 8 *

Проблема в том, что я не могу никак выделить диагонали четвертей...
Если кто занимался такой охинеей, помогите пожалуйста понять это сие чудо C#...
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2014, 14:46
Ответы с готовыми решениями:

Сложить поля, выделенные флажками
есть поля цена, количество, сумма. как в отдельном поле вывести сумму полей, выделенными флажками. помогите, срочно нужно!

составить рандомную матрицу
Задача на С. Нужно составить рандомную матрицу, посмотреть, какие эл-ты меньше нуля и главной диагонали и приравнять их к 0. ...

В матрице B все элементы, стоящие ниже главной диагонали, заменить на нуль. Полученную матрицу сложить с матрицей A.
Даны матрици A и B размером (n*n) В матрице B все элементы, стоящие ниже главной диагонали, заменить на нуль. Полученную матрицу сложить...

4
871 / 721 / 304
Регистрация: 15.04.2013
Сообщений: 2,047
Записей в блоге: 5
07.09.2014, 17:39
163RUSS,
Первое задание для нечетных, у четных разница будет только в двух полностью заполненных * столбцах и рядах.
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
26
27
28
29
30
            int n = 5;
            var array = new int[n,n];
 
            int k = -1;
            int mid = n%2 == 0 ? n/2-1 :n/2;
 
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    array[i, j] = array[i, j]  == -1 ? -1 : 1 + i + j;
                }
 
                k += i <= mid ? 1 : -1;
                for (int j = mid - k; j <= mid + k; j++)
                {
                        array[j, i] = -1;
                }
 
            }
 
 
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < n; j++)
                {
                    Console.Write("{0} ", array[i,j] == -1 ? "*" : array[i, j].ToString());
                }
                Console.WriteLine("");
            }
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
07.09.2014, 23:25
а если матрица с четным количеством элементов в строке/стобце? то какие элементы складывать?
например, если так:
1234
1234
1234
1234
или матрица всегда с нечетным количеством элементов
0
0 / 0 / 0
Регистрация: 07.09.2014
Сообщений: 2
08.09.2014, 00:19  [ТС]
И четное и нечетное вычесляется одинаково:

1 вариант:

1 2 3 4
2 * * 5
3 * * 6
4 5 6 7

2 вариант:

1 * * 4
* 3 4 *
* 4 5 *
4 * * 7

Вот что я наработал:

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
26
27
28
29
30
31
32
33
34
using System;
 
class Program
{
    static void Main()
    {
        int n;
        n = Convert.ToInt32(Console.ReadLine());
        int[,] a = new int[n, n];
 
        Random random = new Random();
        int x = 0;
        for (int i = 0; i < n; i++)
        {
            
            for (int j = 0; j < n; j++)
            {
                
                a[i, j] = random.Next(99);
                Console.Write("{0,4}", a[i, j]);
                if (i + j > (n - 1) / 2 && i + j < (n - 2) / 2 && i - j < n / 2 && i - j > -n / 2)
                {
                    x += a[i, j];
                }
                
            }
            Console.WriteLine();
            
        }
        Console.WriteLine("Сумма этих элементов равна:" + x);
        Console.ReadLine();
    }
    
}
Но что то там не так, немного не получается...
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
09.09.2014, 01:05
1 вариант

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
вот конечный 1 вариант.
class Class {
    static void Main() {
        int n;  //размер матрицы
        int i,j,k;  //для циклов
        int q=1; 
        int r; //для рандома
        int ser,ser_l,ser_r; //для матрицы шаблона (индекс середины, лев и правого края)
        int zn=1; //знак +1 или -1
        int sum=0;
        bool b=false;
        
        n=6;
        Console.WriteLine("матрица размером {0}x{0}",n);
        
        int[,] arr =new int[n,n];   //матрица  задания    
        int [,] t = new int[n,n];   //доп матрица
        Random ran = new Random();
        
        
        //заполнение матрицы случ числами
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                r=ran.Next(0,9);
                //arr[i,j]=q++;
                arr[i,j]=r;
            }
        }
 
        Console.WriteLine("");
        
 
        //матрица шаблон (нечетное кол элементов)
        if (n%2!=0) {
        Console.WriteLine("количество элементов в матрице нечетное");
        ser=(n/2);
        ser_l=ser;
        ser_r=ser;
        
        for (i=0; i<n; i++) {           
                for (j=0; j<n; j++){
                        for (k=ser_l; k<=ser_r; k++){
                            t[i,k]=1;   
                        }
                }
                    ser_l=ser_l-1*(zn);
                    ser_r=ser_r+1*(zn);
                    if (ser_l==0) zn=-1;
            }
        
            }
            
        //матрица шаблон (четное кол элементов)      
        if (n%2==0) {
        
        Console.WriteLine("количество элементов в матрице четное");
        ser=(n/2);
        ser_l=ser-1;
        ser_r=ser;  
 
        for (i=0; i<n; i++) {           
                for (k=ser_l; k<=ser_r; k++){   
                            t[i,k]=1;   
                        }
                
                    if ((ser_l==0)&(b==false)) {
                        b=true;
                        continue;
                        }
                    if ((ser_l==0)&(b==true)) { 
                        zn=-1;                      
                        }                   
                    
                    ser_l=ser_l-1*(zn);
                    ser_r=ser_r+1*(zn);                 
                
            }
        }
        
            
        //суммирование  
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                if (t[i,j]==1) {
                    //Console.WriteLine(arr[i,j]);
                    sum=sum+arr[i,j];       
                }               
            }
        }
            
        Console.WriteLine("sum: "+sum);
        
        Console.WriteLine("");
                
        //PRINT матрица рандомная
        Console.WriteLine("заданная матрица:");
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                Console.Write("{0}",arr[i,j]+" ");
                if (j==(n-1)) Console.WriteLine();
            }
        }   
        
        Console.WriteLine();
        
        //PRINT матрица шаблон
        Console.WriteLine("матрица шаблон:");
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                Console.Write("{0}",t[i,j]+" ");
                if (j==(n-1)) Console.WriteLine();
            }
        }
        
        
        
    Console.ReadLine();
 
    }
}
Добавлено через 32 минуты
2 вариант (только для нечетных)
для четных все равно непонятно, как должно быть. Покажите образец для матрицы 10х10
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
 
class Class {
    static void Main() {
        int n;  //размер матрицы
        int i,j,k;  //для циклов
        int q=1; 
        int r; //для рандома
        int ser,ser_l,ser_r; //для матрицы шаблона (индекс середины, лев и правого края)
        int zn=1; //знак +1 или -1
        int sum=0;
        bool b=false;
        
        n=5;
        Console.WriteLine("матрица размером {0}x{0}",n);
        
        int[,] arr =new int[n,n];   //матрица  задания    
        int [,] t = new int[n,n];   //доп матрица
        Random ran = new Random();
        
        
        //заполнение матрицы случ числами
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                r=ran.Next(0,9);
                //arr[i,j]=q++;
                arr[i,j]=r;
            }
        }
 
        Console.WriteLine("");
        
        //матрица шаблон (нечетное кол элементов)
        
        ser=(n/2);
        ser_l=ser;
        ser_r=ser;
        
        for (i=0; i<n; i++) {
        
                    t[i,ser_l]=1;
                    t[i,ser_r]=1;                       
                    
                    ser_l-=1*(zn);
                    ser_r+=1*(zn);
                    if (ser_l==0) zn=-1;                    
            }
        
        //суммирование  
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                if (t[i,j]==1) {
                    //Console.WriteLine(arr[i,j]);
                    sum=sum+arr[i,j];       
                }               
            }
        }
            
        Console.WriteLine("sum: "+sum);
        
        Console.WriteLine("");
                
        //PRINT матрица рандомная
        Console.WriteLine("заданная матрица:");
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                Console.Write("{0}",arr[i,j]+" ");
                if (j==(n-1)) Console.WriteLine();
            }
        }   
        
        Console.WriteLine();
        
        //PRINT матрица шаблон
        Console.WriteLine("матрица шаблон:");
        for (i=0; i<n; i++) {
            for (j=0; j<n; j++) {
                Console.Write("{0}",t[i,j]+" ");
                if (j==(n-1)) Console.WriteLine();
            }
        }
        
        
    Console.ReadLine();
 
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2014, 01:05
Помогаю со студенческими работами здесь

Как сложить два числа, сгенерированных случайно
Здрасте. В универе задали игру : нужно что бы выводилось два числа(в два текстбокса одной число), а пользователь должен был написать их...

Задать рандомную матрицу ( 50*50 ) и транспонировать 3ю строку
Задать рандомную матрицу ( 50*50 ) и транспонировать 3ю строку. Как это реализовать в матлабе ? Напишите пожалуйста, кто знает.

Создать массив из 50 элементов и сложить те элементы которые кратны 5
Создать массив из 50 элементов и сложить те элементы которые кратны 5

Вывести всю рандомную матрицу, умноженную на скаляр
Ребята... я вывожу матрицу в &quot;label1-&gt;caption&quot;, но она почему то выводится поэлементно, но мне должна вывестись вся рандомная матрица...

Нужно сделать рандомную паузу и рандомную скорость объекта
Имеется код, который бесконечно передвигает объект в определенную точку и обратно. using System.Collections; using...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru