Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
7 / 9 / 4
Регистрация: 25.02.2017
Сообщений: 139
1

Вывод слов из массива без повторений

27.08.2017, 16:15. Показов 3981. Ответов 14
Метки нет (Все метки)

В двумерном массиве char хранятся слова одинаковой длины, мне их нужно вывести на экран без повторений, как проще всего это сделать?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.08.2017, 16:15
Ответы с готовыми решениями:

Вывод массива рандомными элементами без повторений
Нужно выводить массив без повторений. В один текст бокс с помощю рандома выводятся рандомно...

Перестановки элементов массива с размерностью N без повторений
Просмотрел не мало тем, но везде или слишком мудрено или не совсем то, что нужно. В общем мне нужен...

Вывести слова, начинающиеся с букв «a» «b» «c» без учета регистра и без повторений
Здравствуйте, нуждаюсь в вашей помощи! Требуется: Открыть текстовый файл для чтения TEXT1.TXT. ...

Вывод случайных слов без повторений
Здравствуйте, никак не получается вывести слова из бд, что бы они не повторялись при этом:...

14
91 / 80 / 57
Регистрация: 19.02.2016
Сообщений: 336
27.08.2017, 16:24 2
Написать программу, удаляющую дубликаты строк в двумерном массиве
Тут есть хороший пример.
0
7 / 9 / 4
Регистрация: 25.02.2017
Сообщений: 139
27.08.2017, 19:34  [ТС] 3
есть более простой метод решения данной задачи?
0
1119 / 926 / 236
Регистрация: 15.06.2012
Сообщений: 3,635
Записей в блоге: 1
28.08.2017, 00:08 4
Лучший ответ Сообщение было отмечено Крок как решение

Решение

Цитата Сообщение от Крок Посмотреть сообщение
есть более простой метод решения данной задачи?

Не по теме:

то чуство, когда кому-то впадло...


C#
1
2
3
4
var mass = new char[,] { { 'M', 'i', 'k', 'u' }, { 'N', 'e', 'k', 'o' }, { 'M', 'i', 'k', 'u' }, { 'L', 'u', 'k', 'a' }, { 'L', 'u', 'k', 'a' } };
            var n  = mass.GetLength(1);
            var i = 0;
            Console.WriteLine(string.Join("\n", mass.Cast<char>().GroupBy(x => i++/n).Select(x => new string(x.ToArray())).Distinct()));
0
3130 / 2223 / 1098
Регистрация: 14.08.2016
Сообщений: 7,606
28.08.2017, 02:18 5
в массиве char не могут храниться слова...
озвучь задачу по-людски, или перепечатай задание...
0
1119 / 926 / 236
Регистрация: 15.06.2012
Сообщений: 3,635
Записей в блоге: 1
28.08.2017, 03:25 6
Цитата Сообщение от Diamante Посмотреть сообщение
в массиве char не могут храниться слова...
Вообще-то по своей природе string и есть массив char, просто слегка расширеный.
0
Эксперт .NET
15555 / 11804 / 3097
Регистрация: 17.09.2011
Сообщений: 19,716
28.08.2017, 10:15 7
Цитата Сообщение от Wolfdp Посмотреть сообщение
по своей природе string и есть массив char, просто слегка расширеный.
По своей природе любой тип — децл расширенный массив байтов

Двумерный массив символов, кстати, можно очень эффективно разбить на строки таким вот образом:
C#
1
2
3
4
5
6
7
8
9
10
11
unsafe string[] Stringify(char[,] arr)
{
    var strings = new string[arr.GetLength(0)];
 
    int len = arr.GetLength(1);
    fixed (char* ptr = arr)
        for (int i = 0; i < strings.Length; i++)
            strings[i] = new string(ptr, i * len, len);
 
    return strings;
}
0
7 / 9 / 4
Регистрация: 25.02.2017
Сообщений: 139
28.08.2017, 16:03  [ТС] 8
А можно получить объяснение что происходит в данном коде?
0
Эксперт .NET
15555 / 11804 / 3097
Регистрация: 17.09.2011
Сообщений: 19,716
28.08.2017, 17:56 9
Крок, строки двумерного массива преобразуются в string. Используется тот факт, что многомерные массивы в памяти располагаются "плоско": строка1строка2строка3строка4
0
1119 / 926 / 236
Регистрация: 15.06.2012
Сообщений: 3,635
Записей в блоге: 1
28.08.2017, 18:21 10
Цитата Сообщение от kolorotur Посмотреть сообщение
По своей природе любой тип — децл расширенный массив байтов
Ну, сохранить слово в массиве bool будет проблематично (разве что побитово). Меня просто слегка удивила формулировка "в массиве char нельзя хранить слово".
1
Эксперт .NET
15555 / 11804 / 3097
Регистрация: 17.09.2011
Сообщений: 19,716
28.08.2017, 21:18 11
Цитата Сообщение от Wolfdp Посмотреть сообщение
Ну, сохранить слово в массиве bool будет проблематично
Да как два пальца!
C#
1
2
3
4
5
6
7
8
9
10
11
12
var word = "Hello";
var bools = new bool[word.Length * sizeof(char) / sizeof(bool)];
 
fixed (bool* b = bools)
fixed (char* w = word)
{
    for (int i = 0; i < word.Length; i++)
        *((char*)b + i) = w[i];
 
    // И взад!
    word = new string((char*)b, 0, word.Length);
}
1
261 / 222 / 108
Регистрация: 09.12.2015
Сообщений: 652
28.08.2017, 21:57 12
Цитата Сообщение от kolorotur Посмотреть сообщение
Да как два пальца!
А зачем строку-то фиксировать?!
0
Эксперт .NET
15555 / 11804 / 3097
Регистрация: 17.09.2011
Сообщений: 19,716
28.08.2017, 22:43 13
Цитата Сообщение от Fleder Посмотреть сообщение
А зачем строку-то фиксировать?
Затупил в небезопасном угаре!!!1

А если серьезно, то собирался сначала обратно в ту же строку символы из массива записывать, но потом вспомнил про конструктор строки, принимающий указатель на char, да уже написанный код не стал менять.
0
Wolfdp
29.08.2017, 00:18
  #14

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
fixed (bool* b = bools)
Ну если опустить требование сериализации, то в адресной арифметике можно хранить хоть слона, причем этому слону за частую будет пофиг хватает ли в комнате места.

0
92 / 76 / 31
Регистрация: 29.08.2017
Сообщений: 188
29.08.2017, 18:54 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
using System;
using System.Collections.Generic;
 
class Program
{
    public static void Main()
    {
        var arr = new char[,] { { 'M', 'i', 'k', 'u' }, { 'N', 'e', 'k', 'o' }, { 'M', 'i', 'k', 'u' }, { 'L', 'u', 'k', 'a' }, { 'L', 'u', 'k', 'a' } };
        HashSet<string> hsh = new HashSet<string>();
        for (int i = 0; i < arr.GetLength(0); ++i)
        {
            char[] buf = new char[arr.GetLength(1)];
            for (int j = 0; j < arr.GetLength(1); ++j)
            {
                buf[j] = arr[i, j];
            }
            hsh.Add(new String(buf));
        }
        foreach (string str in hsh)
        {
            Console.WriteLine(str);
        }
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2017, 18:54

Вывод слов из mysql без повторений
Здравствуйте, помогите пожалуйста вывести информацию из бд без повторов ...

Вывод слов без повторений,где каждая строка это отдельный элемент в динамическом массиве
Случайно тему создал не в том разделе,поэтому пересоздаю Задача программы. Вводиться случайное...

Вывод рандомного массива без повторений в TextBox
В TextBox рандомно вывожу один из элементов массива. При нажатии на кнопку должен выводится другой...

Вывод числа повторений слов
В заданном тексте найти количество повторений заданного слова. Текст и количество повторений...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru