Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dark-VIN
 Аватар для Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
#1

Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) - C++

31.01.2013, 14:17. Просмотров 436. Ответов 7
Метки нет (Все метки)

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

Тема: Программирование задач по обработке последовательности символов.
Задача 366 (3)
Даны символы a1,…,a10, натуральное число n , символы S1,…,Sn . Как и в предидущей задаче, будем рассматривать слова, входящие в последовательность S1,…,Sn , по-прежнему считая, что количество символов в каждом слове не превосходит 15. Будем также считать, что среди символов a1,…,a10 нет прорбелов, и поэтому последовательность a1,…,a10 может рассматриваться как одно слово. В словах могут быть ошибки:
3) пропущена одна буква.
Требуется найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2013, 14:17     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки)
Посмотрите здесь:

За один просмотр символов строки найти все самые длинные слова, символы в которых идут в строгом возрастании кодов C++
Найти все и вывести все слова в которых есть буква "к" C++
C++ Найти все слова, в которых буква ”а” встречается более чем один раз
Найти в последовательности все слова, из которых могла бы получиться другая последовательность C++
C++ найти все слова, в которых есть двойные согласные и заменить их символом *
C++ Найти все слова, в которых доля букв a, b максимальна
C++ Найти все слова,в которых доля букв a,b максимальна.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
31.01.2013, 14:37     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #2
У задачи слишком путанное условие. Тут можно похерить половину текста без потери смысла, например, вот так:

"Дано слово, состоящее из символов a1,…,a10, натуральное число n , символы S1,…,Sn:
Требуется найти в S1,…,Sn все слова, из которых могло бы получиться слово a1,…,a10 без одной буквы."

Так легче понять?

Добавлено через 1 минуту
Да, и не понятно вот это:
Цитата Сообщение от Dark-VIN Посмотреть сообщение
3) пропущена одна буква.
Есть еще условия? (почему 3)
Dark-VIN
 Аватар для Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
01.02.2013, 01:50  [ТС]     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #3
Ну... Такое условие в книге.

3) - это по номеру варианта нужно сделать пункт 3...

Полная Задача выглядит так:

366. Даны символы a1,…,a10, натуральное число n , символы S1,…,Sn . Как и в предидущей задаче, будем рассматривать слова, входящие в последовательность S1,…,Sn , по-прежнему считая, что количество символов в каждом слове не превосходит 15. Будем также считать, что среди символов a1,…,a10 нет прорбелов, и поэтому последовательность a1,…,a10 может рассматриваться как одно слово. В словах могут быть ошибки:
1) переставлены две соседние буквы;
2) заменена одна буква;
3) пропущена одна буква.
Требуется найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки.

Предидущая задача (365):

365. Даны натуральное число n, символы S1...,Sn. Будем рассматривать слова, образованные символами, входящими в последовательность S1,...,Sn (см. задачу 269) считая при этом, что количество символов в каждом слове не превосходит 15.
а) Найти наибольшую длину символов-палиндромов. (Если палиндромов нет. то ответом должно быть число 0.)
б) Выяснить, верно ли. что каждое слово, не являющееся палиндромом, имеет четную длину.
в) Выяснить, имеются ли два слова, каждое из которых получается переворачиванием другого.
г) Удалить из S1,...,Sn все слова, встречающиеся более двух раз.


269:

269. Даны натуральное число n, символы S1,...,Sn. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами.
а) Подсчитать количество слов в данной последовательности.
б) Подсчитать количество букв а в последнем слове данной последовательности.
в) Найти количество слов, начинающихся с буквы б.
г) Найти количество слов, у которых первый и последний
символы совпадают между собой.
д) Найти какое-нибудь слово, начинающееся с буквы а.



В итоге всего, нужно зделать задачу 369, пункт 3...

 Комментарий модератора 
Запрещено давать ссылки на скачивание программ и книг с файлообменников (рапида, депозит и т.п.) и других сайтов (форумов), если есть возможность их скачать с сайтов фирм-производителей.
ya_noob
_
201 / 145 / 9
Регистрация: 08.10.2011
Сообщений: 432
01.02.2013, 08:44     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #4
Ясно.
Цитата Сообщение от Dark-VIN Посмотреть сообщение
Помогите, пожалуйста, чем-нибудь!!
Вы чего хотите то? Идею или готовую программу?

Идея №1:
Проверьте сколько символов слова "a" содержится в массиве символов "S":
- если все, то выводим все возможные варианты слова "a" без одной буквы (например, если a = "abra", S = "braasty", то возможными ответами будут "bra", "ara", "aba" и "abr" )
- если только одной буквы слова "а" нет в массиве "S", то выводим все возможные варианты слова "а" без этой буквы (например, если a = "abra", S = "brasty", то возможными ответами будут "abr" и "bra" )
- если в "S" не хватает более одной буквы, то решений нет

Идея №2:
В идеи №1 есть такой момент: здесь предполагается, что слова должны быть различными. Но если это не так, то вариантов решения становится больше. Например, для a = "abra" и S = "braasty" возможными вариантами будут следующие:
b r a(0), b r a(3), a(0) r a(3), a(3) r a(0), a(0) b a(3), a(3) b a(0), a(0) b r, a(3) b r,
где в скобках указан индекс буквы а в массиве S.
Здесь решение уже намного сложнее, т.к. надо перебирать все возможные перестановки одинаковых букв.

Добавлено через 50 минут
Упс, ошибочка:
вместо
b r a(0), b r a(3), a(0) r a(3), a(3) r a(0), a(0) b a(3), a(3) b a(0), a(0) b r, a(3) b r,
надо
b r a(2), b r a(3), a(2) r a(3), a(3) r a(2), a(2) b a(3), a(3) b a(2), a(2) b r, a(3) b r,
Dark-VIN
 Аватар для Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
05.02.2013, 16:30  [ТС]     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #5
Да что-то все равно запутано так...
Igor3D
852 / 438 / 38
Регистрация: 01.10.2012
Сообщений: 2,209
05.02.2013, 16:55     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool Check1Missed( const char * beg1, const char * end1,   // первое слово (начало и конец)
                               const char * beg2, const char * end2 )  // второе
{
 if (end1 - beg1 + 1 != end2 - beg2) return false; // дина второго должна быть больше на 1
 int num = 0; 
 while (beg1 < end1) {
  if (beg1[0] != beg2[0]) {
   if (num) return false;
   ++num;
   ++beg2;
  }
  ++beg1;
  ++beg2;
 } 
 return num == 1;
}
Dark-VIN
 Аватар для Dark-VIN
1 / 1 / 0
Регистрация: 16.01.2013
Сообщений: 66
01.05.2013, 18:36  [ТС]     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #7
А как теперь вызывать эту функцию??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 09:54     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки)
Еще ссылки по теме:

Найти в тексте все слова, буквы в которых упорядочены по алфавиту. C++
C++ Непонятно условие. Основы С++ (Найти все слова, в которых доля букв a, b максимальна)
C++ Необходимо найти все слова, в которых нет форм с совпадающими псевдоокончаниями
C++ Найти все слова, в которых совпадает 3 и более букв
Найти все натуральные числа из заданного интервала, для которых справедливо условие C++

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

Или воспользуйтесь поиском по форуму:
Igor3D
852 / 438 / 38
Регистрация: 01.10.2012
Сообщений: 2,209
02.05.2013, 09:54     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки) #8
Цитата Сообщение от Dark-VIN Посмотреть сообщение
А как теперь вызывать эту функцию??
C++
1
2
3
const char * s1 = "TheString";
const char * s2 = "The2String";
bool test = Check1Missed(s1, s1 + strlen(s1), s2, s2 + strlen(s2));
Yandex
Объявления
02.05.2013, 09:54     Непонятно условие. Основы С++ (найти в S1,…,Sn все слова, из которых могло бы получиться a1,…,a10 в результате одной ошибки)
Ответ Создать тему
Опции темы

Текущее время: 18:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru