0 / 0 / 0
Регистрация: 05.11.2019
Сообщений: 80
1

Проверить, имеются ли в слове одинаковые буквы

05.11.2019, 21:22. Показов 9824. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Мне необходимо написать приложение, где пользователь вводит слово и получает ответ, есть ли в нем повторяющиеся буквы или нет.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Console.WriteLine("Введите строку:");
            string s = Console.ReadLine();
            int count = 1;
            for(int i=0;i<=s.Length;i++)
            {
                if(s[i]==s[i+1])
                {
                    count++;
                    if(count>1)
                    {
                        Console.WriteLine("Да");
                    }
                }
            }
После ввода слова, компиляция приостанавливается и указывает на эту строку:
C#
1
 if(s[i]==s[i+1])
Не понимаю в чем заключается ошибка
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2019, 21:22
Ответы с готовыми решениями:

Составить программу для подсчета количества слов, у которых имеются одинаковые буквы
Составить программу для подсчета кол-ва слов, у которых имеются одинаковые буквы. Исходное...

Проверить, имеются ли в данном слове одинаковые буквы
помогите,пожалуйста, составить программу для проверки, имеются ли в данном слове одинаковые буквы.

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

В слове имеются только две одинаковые буквы. Найти их.
В слове имеются только две одинаковые буквы. Найти их. Помогите пожалуйста, не получается...

12
14 / 11 / 3
Регистрация: 16.10.2019
Сообщений: 95
05.11.2019, 21:33 2
C#
1
for(int i=0;i<=s.Length-1;i++)
Может добавить -1?

Добавлено через 1 минуту
Но все равно, программа проверяет есть ли подряд идущие одинаковые символы.
0
0 / 0 / 0
Регистрация: 05.11.2019
Сообщений: 80
05.11.2019, 21:37  [ТС] 3
Ошибка исчезла, но программа все равно работает некорректно
Не каждый раз показывает результат
0
315 / 244 / 149
Регистрация: 03.10.2017
Сообщений: 886
Записей в блоге: 1
05.11.2019, 22:03 4
так как вы используете i+1, значит в for i<=Length-2
C#
1
for(int i=0;i<=s.Length-2;i++)
Добавлено через 1 минуту
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Console.WriteLine("Введите строку:");
            string s = Console.ReadLine();
            int count = 1;
            for(int i=0;i<=s.Length;i++)
            {
                if(s[i]==s[i+1])
                {
 
                    count++;
                        Console.WriteLine("Да");
                    break;
                }
            }
if (count!=0) Console.WriteLine("Нет");
1
0 / 0 / 0
Регистрация: 05.11.2019
Сообщений: 80
05.11.2019, 22:29  [ТС] 5
Все равно вывод не правильный
0
352 / 247 / 76
Регистрация: 18.03.2016
Сообщений: 979
05.11.2019, 23:27 6
RIMINI,
C#
1
bool res = s.GroupBy(x => x).Any(x => x.Count()>1); //true - есть дубли, false - нет дублей
0
1843 / 1185 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
06.11.2019, 05:58 7
Лучший ответ Сообщение было отмечено RIMINI как решение

Решение

RIMINI, хотелось бы немного уточнить задание.
Цитата Сообщение от RIMINI Посмотреть сообщение
есть ли в нем повторяющиеся буквы
Имеется в виду - повторяющиеся подряд ? или повторяющиеся во всей строке ?
Если в строке то так, самый банальный вариант
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(string[] args)
    {
        Console.Write("Введите строку:");
        string str = Console.ReadLine();
 
        char[] arr = new char[str.Length];
 
        for (int i = 0; i < str.Length; i++)
        {
            if (CheckChar(arr, str[i]) == true)
            {
                Console.WriteLine("Найден повторяющийся символ");
                break;
            }
            arr[i] = str[i];
        }
 
        Console.ReadKey();
    }
 
    static bool CheckChar(char[] arr, char ch)
    {
        for (int i = 0; i < arr.Length; i++)
        {
            if (arr[i] == ch)
                return true;
        }
        return false;
    }
}
1
Модератор
Эксперт .NET
15661 / 10843 / 2812
Регистрация: 21.04.2018
Сообщений: 31,846
Записей в блоге: 2
06.11.2019, 07:21 8
Лучший ответ Сообщение было отмечено RIMINI как решение

Решение

Enifan, "мудрите, батенька, мудрите..."
Метод CheckChar совершенно излишен.
А сравнение булевого значения с true.... Просто нет слов!

Вот так оно должно быть
C#
14
           if (arr. Contains (str[i]))
1
3563 / 2504 / 1174
Регистрация: 14.08.2016
Сообщений: 8,207
06.11.2019, 13:38 9
не проще ли
C#
1
str.Length == str.Distinct().Count();
0
Модератор
Эксперт .NET
15661 / 10843 / 2812
Регистрация: 21.04.2018
Сообщений: 31,846
Записей в блоге: 2
06.11.2019, 13:57 10
Diamante, да так проще.
Но обычно на этом этапе обучения LINQ ещё не проходят.
Даже, arr.Contains(...) возможно ещё не проходили и надо заменить на Array.IndexOf(...) >= 0.

Добавлено через 7 минут
RIMINI, если повторяющиеся подряд, то так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            Console.WriteLine("Введите строку:");
            string s = Console.ReadLine();
            // int count = 1;
            int i=1;
            for(;i<s.Length;i++)
            {
                if(s[i]==s[i-1])
                {
                 //   count++;
                 //   if(count>1)
              //      {
                        Console.WriteLine("Да");
            //        }
                   break;
                }
            }
            if (i == s.Length)
                 Console.WriteLine("Нет");
0
1843 / 1185 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
06.11.2019, 14:37 11
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Метод CheckChar совершенно излишен.
Да, я согласен с тем, что в шарпе содано много готовых методов для решения задач, один из них вы привели. Не знаю почему, но мне иногда проще самому написать метод, чем найти готовое решение. Иногда это помогает инициатору раздела.

Не по теме:

Это моя вечная проблема "знать все методы", может когда нибудь ее решу. Помню когда было тестирование нашей группы, еще на C++, все спокойно решали задачу пока не наткнулись на один метод, который к сожалению не имел перегрузок. Пока другие искали в интернете готовое решение с перегрузкой, я уже написал сам метод, и решил полностью задачу. Многие считают что профессиональнее взять готовый метод, чем написать свой, у меня увы с этим не все так гладко


Цитата Сообщение от Элд Хасп Посмотреть сообщение
А сравнение булевого значения с true.... Просто нет слов!
Мне нравится кодить в стиле - "чем проще, тем лучше." Можно сократить код до невозможности, потом сам в нем же и запутаешься. Конечно запутаться в булевом сравнение - это глупо, но я как то люблю упрощать код.

Не по теме:

Был какой то код, похожий на этот, минут 10 ломали голову в чем проблема

C++
1
if (!(!CheckChar(arr, str[i]) != CheckChar(arr, str[i + 1])))
с тех пор, я как бы сторонник "простоты", хотя говорят это не профессионально...

0
0 / 0 / 0
Регистрация: 05.11.2019
Сообщений: 80
06.11.2019, 18:10  [ТС] 12
Всем большое спасибо! Очень помогли

Добавлено через 32 минуты
Почему я не могу применить метод Contains? Выдает ошибку "char[] не содержит определения для "Contains", и не удалось найти доступный метод расширения "Contains", принимающий тип "char[]" в качестве первого аргумента"
0
1843 / 1185 / 501
Регистрация: 14.10.2018
Сообщений: 3,180
06.11.2019, 18:29 13
RIMINI, подключите, и все заработает
C#
1
using System.Linq;
1
06.11.2019, 18:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2019, 18:29
Помогаю со студенческими работами здесь

В слове имеются только две одинаковые буквы. Найти их
есть на паскале uses crt; var s: string; i,j: byte; begin write('s='); readln(s); for...

Определить, имеются ли в слове Х повторяющиеся буквы
Например есть кукуруза.Тут 2к,3у повторения.Как это записать,если слово задает пользователь с...

Определить, имеются ли в слове повторяющиеся буквы.
Составьте программу, определяющую, имеются ли в слове Х повторяющиеся буквы.

Одинаковые буквы в слове
Как определить, если ли в слове две одинаковые буквы, которые не обязательно идут ранее... Две...


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

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

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