|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.12.2008, 16:30 | #1 |
Регистрация: 23.11.2008
Сообщений: 9
|
Дана строка S. Преобразовать строку, заменив в ней каждое многоточие одной точкой.Строки в C++
Начал писать код на C++ (Дана строка S. Преобразовать строку, заменив в ней каждое многоточие одной точкой.)
Столкнулся с проблемой... Под рукой книжек нет, в Инете ничего полезного не нашёл по данному вопросу... начало кода: Код:
Код:
|
12.12.2008, 08:25 | #2 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
Я бы решил задачу так:
Просматриваеш массив на предмет наличия знака '.' Далее, при нахождении такой надо убедиться, что их три. Я бы сделал это так: создаеш переменную, которая считает кол-во встреченных тобою точек, назовем ее a (а так же переменную, в которую ты запишеш номер элемента, в котором встретил первую точку, назовем ее b). если программа после 1-2 точек натыкается на отличный от точки символ, то эта перменная обнуляется. если же она насчитает 3 точки, то она проверяте, является ли элемент i+1 точкой, если да - значит в последователньости более 3-х точек. Если нет, то: Элемент массива под номером b заменяем на '.' (в данном случае это лишнее, но делает программу более универсальной, можно этот шаг пропустить). элементы, чьи индексы больше, чем (b+2*n), где n это кол-во встреченных троеточий. смещаем на 2*n элемента влево. Код:
Не забудь после последнего элемента поставить знак
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 12.12.2008 в 12:49. |
12.12.2008, 16:15 | #3 |
Регистрация: 23.11.2008
Сообщений: 9
|
а если не через массив, а как в паскале:
Код:
|
12.12.2008, 19:51 | #4 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
В С++ все строки представляют из себя масивы. по этому сними можно работать только через масивы.
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс |
15.12.2008, 16:17 | #5 |
Регистрация: 23.11.2008
Сообщений: 9
|
|
15.12.2008, 20:58 | #6 |
Linux C++ Qt ARM
Старожил
Регистрация: 30.11.2008
Сообщений: 3,030
|
это не маисв строк, это символьный масив (это строка, но представленна она в виде масива забитого разными символами, например буквами).
ввод осуществляется командой cin>>mas (однако будут удалены все символы, после пробела). либо gets(mas). (Думаю итак понятно, что mas это символьный масив, обьявляется он как и любой другой - Код:
Представляется текст так: допустим мы ввели "text" mas[0]='t' mas[1]='e' mas[2]='x' mas[3]='t' что касается символов с mas[4] по mas[n-1], то там записанно черт знает что. и где-то в конце должен быть нулевой символ '\0' (я вот, честно сказать, не помню, ставиться ли он в конце строки или в конце введенного текста). т.е. если мы напишем код Код:
Правда печать лутше делать через цикл: Код:
Рекомендую пользоваться функцией strlen(возвращает длинну строки, включая пробелы, но неввключая невведенные символы (т.е. то, что хранится в зарезервированной памяти, но куда небыл записан текст при вводе строки.)). Пример кода: Код:
Дилетант широкого профиля.
"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс Последний раз редактировалось ROD; 15.12.2008 в 21:08. |
16.12.2008, 18:38 | #7 |
Пользователь
Регистрация: 18.01.2008
Сообщений: 49
|
могу поделится паскалевским вариантом... в СИ слаб...
|
16.12.2008, 18:42 | #8 |
Регистрация: 23.11.2008
Сообщений: 9
|
я сам в паскале делал... выше выкладывал этот код...
а как в Си под ДОС это сделать? я даж книг путёвых не могу найти... помогите с досовским разобраться... |
16.12.2008, 19:04 | #9 |
Форумчанин
Регистрация: 17.11.2008
Сообщений: 233
|
Ну так что?! Задача то все не решена?!
|
16.12.2008, 20:14 | #10 |
Пользователь
Регистрация: 20.06.2008
Сообщений: 95
|
Мое решение:
Код:
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" | Mashaa | Помощь студентам | 13 | 09.12.2009 13:28 |
Преобразование числа с плавающей точкой в строку | Sibedir | Общие вопросы Delphi | 14 | 09.03.2008 21:48 |
Замена многоточия одной точкой в строке S. | Карась | Помощь студентам | 9 | 18.01.2008 18:13 |
Как преобразовать UINT в строку? | Сильванович Михаил | Общие вопросы C/C++ | 2 | 12.07.2007 09:58 |