Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
CLOSEEE
0 / 0 / 1
Регистрация: 21.06.2015
Сообщений: 54
1

Автоматическое заполнение массива

07.07.2017, 01:05. Просмотров 924. Ответов 4
Метки нет (Все метки)

Ребят, помогите. Нужно заполнить массив. У меня есть первая строка, которая выглядит таким образом 1000, мне нужно сложить третий и четвертый элемент по модулю два. Полученный результат записать в начало второй строки массива и переписать первые три элемента первой строки, то есть, вторая строка будет выглядеть так 0100, третья соответственно 0010, четвертая 1001 и так до 15 раз. Очень срочно нужно.


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.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] x = { 1, 0, 0, 0 };
            int sum = 0;
            
            for (int i = 0; i < 4; i++)
            {
                sum = x[2] + x[3];
            }
            Console.WriteLine("1, 0, 0, 0");
            Console.WriteLine(sum);
            Console.ReadKey();
        }   
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2017, 01:05
Ответы с готовыми решениями:

Найти сумму четных элементов массива целых чисел. Размерность массива – 20. Заполнение массива осуществить случайными числами от 100 до 200
Найти сумму четных элементов массива целых чисел. Размерность массива – 20....

Заполнение массива и ошибка "Индекс находился вне границ массива"
Как исправить проблему? for (int i = 0; i &lt;= n; i= i + 1 ) { ...

Заполнение массива 1 и 0.
Всем привет. как можно заполнить массив не случайными числами,а именно...

Создание и заполнение массива
в классе создаю массив.не могу его инициализировать. using System; using...

Заполнение массива через for
Как заполнить масив через фор что бы были числа только 0 1 и 2 ? напишите...

4
Aael
394 / 296 / 170
Регистрация: 02.06.2016
Сообщений: 514
Завершенные тесты: 1
07.07.2017, 01:17 2
CLOSEEE, поразрядный xor или сложение по модулю два в c#: a ^ b, если нужен только последний разряд то: a ^ b & 1, в общем случае для неотрицательных чисел остаток от деления (a + b) % 2. Для вашего примера:
C#
1
2
3
int[] x = { 1, 0, 0, 0 };
for (int i = 0; i < 15; i++)
    x = new int[]{ x[2] ^ x[3], x[0], x[1], x[2] };
Без создания 15 массивов и для произвольной длины:
C#
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < 15; i++)
{
    int temp = x[x.Length - 1] ^ x[x.Length - 2];
    for (int j = 0; j < x.Length; j++)
    {
        // обмен x[j] и t
        x[j] = x[j] ^ temp;
        temp = x[j] ^ temp;
        x[j] = x[j] ^ temp;
    }
}
0
CLOSEEE
0 / 0 / 1
Регистрация: 21.06.2015
Сообщений: 54
07.07.2017, 01:26  [ТС] 3
Окей. У меня должен получится массив 15 строк на 4 столбца. И первый столбец нужно вывести на экран строкой, так как это псевдослучайная последовательность

Цитата Сообщение от Aael Посмотреть сообщение
CLOSEEE, поразрядный xor или сложение по модулю два в c#: a ^ b, если нужен только последний разряд то: a ^ b & 1, в общем случае для неотрицательных чисел остаток от деления (a + b) % 2. Для вашего примера:
C#
1
2
3
int[] x = { 1, 0, 0, 0 };
for (int i = 0; i < 15; i++)
    x = new int[]{ x[2] ^ x[3], x[0], x[1], x[2] };
Без создания 15 массивов и для произвольной длины:
C#
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < 15; i++)
{
    int temp = x[x.Length - 1] ^ x[x.Length - 2];
    for (int j = 0; j < x.Length; j++)
    {
        // обмен x[j] и t
        x[j] = x[j] ^ temp;
        temp = x[j] ^ temp;
        x[j] = x[j] ^ temp;
    }
}
0
CLOSEEE
0 / 0 / 1
Регистрация: 21.06.2015
Сообщений: 54
07.07.2017, 01:40  [ТС] 4
Вот такую вещь я должен получить на экране. И столбец, который выделен записать строкой.

Автоматическое заполнение массива
0
Aael
394 / 296 / 170
Регистрация: 02.06.2016
Сообщений: 514
Завершенные тесты: 1
07.07.2017, 02:39 5
Лучший ответ Сообщение было отмечено CLOSEEE как решение

Решение

CLOSEEE, можете адаптировать один из вариантов выше. Мне кажется, массивы здесь не нужны, только бинарная арифметика, но если нужны, то вариантов много можно написать, например:
Кликните здесь для просмотра всего текста
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
int n = 15, m = 4;
int[][] y = new int[n][];
y[0] = new int[]{ 1, 0, 0, 0 };
            
for (int i = 1; i < n; i++)
{
    y[i] = new int[m];
    Array.Copy(y[i - 1], 0, y[i], 1, m - 1);
    y[i][0] = y[i - 1][m - 1] ^ y[i - 1][m - 2];
}
 
// Вся таблица
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        Console.Write(y[i][j]);
    Console.WriteLine();
}
 
// Первый столбец
for (int i = 0; i < n; i++)
    Console.Write(y[i][0]);
Console.WriteLine();
 
// Если нужно собрать число:
int z = 0;
for (int i = 0; i < n; i++)
    z = (z << 1) | y[i][0];
Console.WriteLine(Convert.ToString(z, 2) + " = " + z);
 
Console.ReadLine();


Добавлено через 38 минут
без массивов:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Action<int, int> print = (Num, Len) =>
    Console.WriteLine(Convert.ToString(Num, 2).PadLeft(Len, '0'));
 
int x = Convert.ToInt32("1000", 2); // x = 0b1000
int y = 0, sz = 4, n = 15;
 
for (int i = 0, t; i < n; i++)
{
    print(x, sz);
 
    y = (y << 1) | (x >> (sz - 1));
    t = ((x >> 1) ^ x) & 1; // сложение правых бит по модулю два
    x = (t << (sz - 1)) | (x >> 1);
}
print(y, n);
1
07.07.2017, 02:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2017, 02:39

Заполнение динамического массива в С#
Пытаюсь заполнить массив элементами от начального значения (demarrer) до...

Заполнение массива змейкой
пример 43210 56789 для заполнения обязательно использовать вектор class...

Заполнение массива циклом
Здравствуйте! Я новичок. Помогите пожалуйста сделать вот что. Заполнить массив...


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

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

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