Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7

Ошибка в условии для прямого поиска в строке

21.02.2013, 15:53. Показов 2443. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу программу для элементарного прямого поиска слова, не выполняется условие:
C#
1
2
if (j + keynum <= stroka.Length && stroka[j + keynum] == key[keynum])
                                        sovpad++;
Не могу найти свою ошибку. Сама программа ниже:
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
                string [] a =System.IO.File.ReadAllLines(@"путь к текстовому файлу");
                int count = a.Length, sovpad=0;
                for (int i = 0; i < count; i++)
                {
                    Console.WriteLine(a[i]);
                }
                Console.WriteLine("\n");
                Console.WriteLine("Ищем значение = ");
                string c =Console.ReadLine();
                char[] key = c.ToCharArray(0, c.Length);
                for (int i = 0; i < count; i++)
                {
                    char[] stroka = a[i].ToCharArray(0, a[i].Length); //разбиение строки на символы
                    for (int j = 0; j < stroka.Length; j++)
                    {
                        if (stroka[j] == key[0]) // первое совпадение с ключом
                        {
                            sovpad = 1;
                            if (j + 1 < stroka.Length && stroka[j + 1] == key[1]) // проверка следующих совпадений
                            {
                                sovpad = 2;
                            
                                for (int keynum = 1; keynum == key.Length; keynum++)
                                {
                                    if (j + keynum < stroka.Length && stroka[j + keynum] == key[keynum])
                                        sovpad++;
                                }
                                if (sovpad == key.Length)
                                {
                                    Console.WriteLine("найдено в строке " + i);
                                }
                            }
                        }
                    }
                }
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.02.2013, 15:53
Ответы с готовыми решениями:

Ошибка при поиска символа '/' в строке
Здравствуйте. Начал изучать Web-программирование. Есть страничка, в ней вставка javascript. В этой вставке обрабатывается строка. Всю...

Алгоритм прямого поиска. Реализация на С++
может кто-то написать алгоритм прямого поиска на С++? очень надо... суть поиска такова: Алгоритм прямого поиска Идея...

Как найти для этих условии 2 парных чисел а и b при котором выполняется все условии?
Мой пример кода был таким данный момент но не работал. В экране пустота. Ничего не выводится. Где у меня ошибка? Чего исправит? static...

12
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
21.02.2013, 16:12
Это все можно сильно простить, но точно могу сказать, подобные условия проверки не приветствуются. Получается так, что даже сам создатель , т.е Вы , не можете найти ошибку.
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7
21.02.2013, 16:18  [ТС]
Скажите, а каким способом было бы корректно это описать?
0
13 / 13 / 2
Регистрация: 13.02.2013
Сообщений: 45
21.02.2013, 16:20
Тебе нужно в файле найти все вхождения введенного с клавиатуры слова?
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7
21.02.2013, 16:22  [ТС]
Достаточно найти первое вхождение.
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
21.02.2013, 16:22
Ок, но пару уточняющих вопросов, вам нужно найти совпадения в тексте по слову, так? Если так, то зачем вы искомое слово разбиваете на символы ? ведь можно производить поиск по целому слову.
1
13 / 13 / 2
Регистрация: 13.02.2013
Сообщений: 45
21.02.2013, 16:26
Согласна, работайте со строками, тем более достаточно методов для этого: http://msdn.microsoft.com/ru-r... tring.aspx
0
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7
21.02.2013, 16:28  [ТС]
Является ли поиск слова целиком тем же самым прямым поиском слова в строке, который пытаюсь написать я, но с несколько иным алгоритмом? Или же это отдельный, по-своему устроеный поиск? Дело ведь в том, что мне нужно написать именно такой способ поиска. С перебором символов.
0
13 / 13 / 2
Регистрация: 13.02.2013
Сообщений: 45
21.02.2013, 16:28
Можно из файла считывать по строке и в ней проверять вхождение необходимого слова http://msdn.microsoft.com/ru-r... t0x33.aspx
если есть совпадения выходите из цикла чтения и закрываете файл
1
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7
21.02.2013, 16:38  [ТС]
Спасибо за ценную информацию. Если бы у меня был выбор метода для поиска, я бы постарался использовать что-то, близкое к этому. Но, к сожалению, моей задачей стоит написание поиска перебором символов.
0
 Аватар для ITL
284 / 255 / 73
Регистрация: 17.07.2012
Сообщений: 618
21.02.2013, 17:51
Готово, твоим методом, куча циклов, разобраться не очень просто Это все можно записать пару строчками, но ты же хочешь по-сложному)
Кстати ищет все слова , а не только первое вхождение.

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
class Program
    {
        static void Main(string[] args)
        {
            string[] a = System.IO.File.ReadAllLines(@"D:\Proverka.txt");
            for (int i = 0; i < a.Length; i++)
            {
                Console.WriteLine("Строка №{0} : {1}",i+1,a[i]);
            }
            Console.Write("\nИщем значение = ");
 
            char[] c = Console.ReadLine().ToCharArray();
            for (int i = 0; i < a.Length; i++) //строка
            {
                string[] temp = a[i].Split();
                for (int j = 0; j < temp.Length; j++ )//каждое слово в строке
                {
                    int count = 0;//счетчик совпадения букв
                    foreach (char charr in temp[j])//проверка букв в искомом слове                     
                        for (int k = 0; k < c.Length; k++)
                            if (charr == c[k])
                            {
                                count++;
                                if (count == c.Length)//если кол-во букв искомого слова совпало, то слово найдено
                                    Console.WriteLine("найдено совпадение слова {0} в {1} строке", temp[j], i+1);
                                break;
                            }
                }
            }
            Console.ReadLine();
        }
    }
1
13 / 13 / 2
Регистрация: 13.02.2013
Сообщений: 45
21.02.2013, 20:03
Цитата Сообщение от Balavath Посмотреть сообщение
for (int keynum = 1; keynum == key.Length; keynum++)
замени на
C#
1
for (int keynum = 2; keynum < key.Length; keynum++)
по идее будет работать

Добавлено через 3 минуты
Я так понимаю что это задание, а не Balavath так хочет. Алгоритм имеет место быть, но он отличается высокой сложностью. Интересно в жизни его кто нибудь использует???
1
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 7
21.02.2013, 21:08  [ТС]
Большое спасибо за помощь, ITL и Tigra Оба варианта работают, пойду дописывать остальное
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.02.2013, 21:08
Помогаю со студенческими работами здесь

Подсчёт нулей в каждой строке матрицы при условии, что в строке есть ненулевые значения
var colvo, i, j, k:integer; n, m, b:byte; a:array of integer; c:array of integer; begin readln(colvo); for i:=1...

метод прямого поиска экстремума ( Хука-Дживса)
Добрый день, помогите пожалуйста найти экстремумы методом прямого поиска ( Хука-Дживса). Дана функция: 100 (x2-x1^2)^2+ (1-x1)^2 ...

Найти максимум функции методом прямого поиска
функция : exp(x)*cos(x), пределы , найти ее максимум методом прямого поиска, но вот такую процедуру преподаватель не принимает, говорит,...

Алгоритм прямого поиска - проверить наличие значения в массиве
Составить программу. Программа заполняет массив целыми случайными числами, и выводит на экран. С клавиатуры вводится значение, которое...

Ошибка в функции поиска подстроки в строке. Алгоритм Бойера-Мура-Хорспула.
Функция получает ссылки на две переменные: haystack и needle строкового типа. В haystack должна содержаться строка, в которой будет...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru