Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для VanyakaCompany
4 / 3 / 3
Регистрация: 15.07.2014
Сообщений: 77

Работа со строками

06.05.2016, 23:29. Показов 2040. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется задачка (олимпиадная, но олимпиада уже прошла):

Новый кодовый замок для владельцев нетбуков представляет головоломку не только для грабителей, но и для владельцев. На табло замка все время высвечивается некоторая комбинация нулей и единиц. Замок откроется, если на табло высветится некоторая определенная комбинация. Получить требуемую комбинацию из текущей можно нажимая в нужной последовательности кнопки, на которых написано 0 и 1 соответственно. Если нажать кнопку с нулем, то текущая комбинация на табло сдвигается на одну позицию вправо (правая цифра при этом исчезает), а в самом левом разряде записывается 0. При нажатии на кнопку с единицей происходит то же самое, только в левый разряд записывается 1. Известно, какая комбинация цифр сейчас находится на табло, и какую комбинацию требуется получить, чтобы открыть замок. Помогите владельцу нетбука - определите, за какое минимальное количество нажатий на кнопки можно получить требуемую комбинацию.

Формат входных данных: Первая строка содержит текущую последовательность цифр, вторая строка - последовательность, которую требуется получить. Гарантируется, что обе последовательности не пустые, имеют одинаковую длину, не превосходящую 100 000, и состоят только из нулей и единиц. Цифры в строках записаны подряд (без пробелов).

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

Вот мой код:
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
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string.h>
 
using namespace std;
 
char str1[100000];
char str2[100000];
int a = 0;
 
int main()
{
    setlocale(0, "");
    scanf("%s", &str1);
 
    scanf("%s", &str2);
    
    while ((strcmp(_strrev(_strrev(str1) + a), str2+a)) != 0)
    {
        a++;
    }
    printf("%d\n", a);
    
    system("pause");
    return 0;
}
Пусть алгоритм не идеальный, но работать должен. Однако в некоторых случаях, точнее в большинстве из них, выдаёт неправильный ответ.
Например при введённых 1011 и 1111 должен выводить 3, а выводит 2.
Объясните в чём ошибка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.05.2016, 23:29
Ответы с готовыми решениями:

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

Работа со строками
Есть задание: Код, который давали на лекции int main() { char s = { 0 }; gets_s(s); int len = strlen(s);

Работа со строками
#include &lt;iostream&gt; #include &quot;locale.h&quot; using namespace std; char namer={'Петров','Сидоров','\0'}; int main(){ ...

2
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12919 / 6787 / 1817
Регистрация: 18.10.2014
Сообщений: 17,169
07.05.2016, 03:30
Цитата Сообщение от VanyakaCompany Посмотреть сообщение
Пусть алгоритм не идеальный, но работать должен.
Во-первых, какой "алгоритм"? Вы пока что привели только код, т.е. реализацию некоего алгоритма. При этом, по вашим же словам, код работает неправильно, т.е. задуманному вами алгоритму скорее всего не соответствует. Каким образом по-вашему в такой ситуации мы должны определить, какой именно алгоритм вы пытались реализовать? Телепатией?

Во-вторых, прекрасно видно, что ваша реализация на каждой итерации меняет исходное значение str1 и на следующую итерацию уже идет "искореженное" значение str1. Вы именно этого хотели в вашем алгоритме? (Как профессиональный телепат, скажу вам по секрету, что именно в этом и заключается ваша ошибка.)

В-третьих, scanf("%s", str1). Никакого &.

В-четвертых, в стандартной библиотеке нет функции _strrev.

В-пятых, что за бардак с включением заголовочных файлов? Что тут делает какой-то "stdafx.h"? И с какой целью в код включены одновременно <cstring> и <string.h>? Зачем включен <iostream>?
0
 Аватар для VanyakaCompany
4 / 3 / 3
Регистрация: 15.07.2014
Сообщений: 77
07.05.2016, 11:05  [ТС]
Согласен, оформил жутко, извини.

Сделать я хотел следующее:
Пока две строки не равны, отнимать у них по 1 цифре (у первой строки - из конца, у второй строки - из начала)
Кол-во таких сокращений и есть ответ (переменная а).

Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
1011
1111
 
101
 111
 
10
  11
  
1
   1
Строки сократились 3 раза, соответственно ответ должен быть 3.

Можешь помочь реализовать это?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2016, 11:05
Помогаю со студенческими работами здесь

Работа с строками
И так дано StrCChar (s, c1, s2, n) надо заменить все символы c1 в строке s, начиная с позиции n, на строку s2. Надо на с++ и желательно...

Работа со строками
Задание : 1.Напишите функцию, которая проверяет правильность введенного пользователем пароля 2.Проверьте правильность ввода фамилии,...

Работа со строками
Не могу написать правильно работающую программу для условия: Написать программу, которая к каждому слову в тексте добавляет сочетание...

Работа со строками
Приветствую, друзья-программисты. Дали в универе лабу по строкам. У нас выпала лекция и сказали самостоятельно изучить. Прочитал много...

Работа со строками
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв; между соседними...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru