1 / 1 / 1
Регистрация: 19.06.2013
Сообщений: 67
1

Вывести только те слова, которые встречаются в тексте ровно один раз

02.01.2015, 18:25. Показов 3579. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Помогите плз подкорректировать так, чтобы работало правильно, а именно: если в строке мы берем очередное слово, которое мы проверили ранее, оно не выводится.
То есть, если у нас строка "раз два два раз", у нас ничего не выводится. В моем же случае выводится "два раз"

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 StringBuilder InitialStr = new StringBuilder("раз два два три три раз");
            Console.WriteLine("Исходная строка: " + InitialStr + "\n");
            for (int i = 0; i < InitialStr.Length; )
                if (char.IsPunctuation(InitialStr[i])) InitialStr.Remove(i, 1);
                else ++i;
            Console.WriteLine("Измененная строка: " + InitialStr + "\n");
            string str = InitialStr.ToString();
            str = str.Trim();
            int k;
            Console.WriteLine("Одиночные слова: ");
            string[] word = str.Split(' ');
            for (int i = 0; i < word.Count(); ++i) // берем итое слово
            {
                k = 0;
                for (int j = i + 1; j < word.Count()-1; ++j) // берем следующее за итым слово
                    if (word[i] == word[j]) ++k; // если следующее слово равняется итому, то к+1
                if (k == 0) Console.WriteLine(word[i]); // если не найдено совпадений, выводим слово
            }
            Console.ReadKey();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.01.2015, 18:25
Ответы с готовыми решениями:

Вывести только те слова, которые встречаются в тексте ровно один раз
Дана строка, в которой содержится осмысленное текстовое сообщение. Слова сообщения разделяются...

Как Вывести только те слова, которые встречаются в тексте ровно один раз
Вот есть такая программа Вывести только те слова сообщения, которые содержат хотя бы одну цифру....

Вывести в массиве только те слова, которые встречаются в тексте ровно один раз
16. Вывести только те слова, которые встречаются в тексте ровно один раз.

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

5
Эксперт .NET
5490 / 4260 / 1211
Регистрация: 12.10.2013
Сообщений: 12,262
Записей в блоге: 2
02.01.2015, 18:48 2
Keller47, может быть вот так поможет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication3 {
    class Program {
        static void Main(string[] args) {
            string data = "раз два два три три раз четыре пять";
            var result = data.Split(new[] { ' ' },
                StringSplitOptions.RemoveEmptyEntries)
                .GroupBy(s => s.Length)
                .Where(g => g.Count() == 1)
                .SelectMany(v => v);
            string outStr = (result.Count() == 0) ? "No result" : string.Join(" ", result);
            Console.WriteLine(outStr);
            Console.ReadLine();
        }
    }
}
0
455 / 400 / 152
Регистрация: 23.01.2011
Сообщений: 1,054
02.01.2015, 22:59 3
если строка будет
C#
1
string data = "раз два два три  четыре пять";
все равно получим - четыре пять
0
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
02.01.2015, 23:21 4
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 
class Program
{
    static Dictionary<string, int> CountWords(string text)
    {
        Dictionary<string, int> frequencies;
        frequencies = new Dictionary<string, int>();
 
        string[] words = Regex.Split(text, @"\W+");
 
        foreach (string word in words)
        {
            if (frequencies.ContainsKey(word))
            {
                frequencies[word]++;
            }
            else
            {
                frequencies[word] = 1;
            }
        }
        return frequencies;
    }
 
    static void Main()
    {
        string text = @"раз два два три три раз четыре пять";
 
        Dictionary<string, int> frequencies = CountWords(text);
        foreach (KeyValuePair<string, int> entry in frequencies.Where(n => n.Value == 1))
        {
            string word = entry.Key;
            Console.WriteLine(word);
            //int frequency = entry.Value;
            //Console.WriteLine("{0}: {1}", word, frequency);
        }
    }
}
0
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
02.01.2015, 23:30 5
C#
1
2
3
4
5
6
7
8
 string data = "раз два три три раз четыре пять";            
 var result = data.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
     .GroupBy(s => s)
     .Where(g => g.Count() == 1)
     .SelectMany(v => v); 
 
 foreach (var i in result)            
     Console.WriteLine(i);
0
455 / 400 / 152
Регистрация: 23.01.2011
Сообщений: 1,054
02.01.2015, 23:40 6
C#
1
2
3
4
5
6
7
8
9
10
        static void Main(string[] args)
        {
            string data = "раз два два три раз четыре пять";
            var result = data.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)
                .GroupBy(x => x)
                .Where(x => x.Count() == 1)
                .Select(x => x.Key);
            foreach (var item in result)  Console.Write(item + " ");
            Console.ReadLine();
        }
Добавлено через 1 минуту
maxillion, прости что код похож, честно сам писал ))))))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2015, 23:40
Помогаю со студенческими работами здесь

Вывести слова, которые встречаются в тексте ровно один раз
может, кто знает, помогите пожалуста решить задачу: дано - текст, слова в котором разделены...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и...

Вывести только те слова сообщения, которые встречаются в нем ровно один раз
Вывести только те слова сообщения, которые встречаются в нем ровно один раз. Помогите исправить...

Вывести только те слова сообщения, которые встречаются в тексте один раз
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и...


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

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

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