![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Nike0 |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Доброго времени суток, есть такой вопрос: сделал задачу, в условии было сказано "слова разделены пробелами и запятыми", для первой и третьей процедуры сделал класс делимремувер, т.к. текст вводится через гетлайн, для второй(сортировка строки по возрастанию длины слов) использовал while и вектор для сортировки, можете исправить так, чтобы во второй задаче сортировка игнорировала запятую и читала "чистое" слово?
#include <vcl.h> Добавлено через 4 мин. так же появился вопрос про строки на чистом Си: мне нужно описать функцию replace(s,s1,s2), проще говоря контекстная замена текста, так вот, набросал код, но у меня что-то не очень хорошо меняет лдя случая когда искомая часть текста=заменяемой (берет непонятные значения из памяти), и вообще зацикливается, когда искомая больше-меньше заменяемой. #include <stdio.h> |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата в условии было сказано "слова разделены пробелами и запятыми" "Пробелами и запятыми", или "пробелами или запятыми"? То есть, там, где есть запятая, ОБЯЗАТЕЛЬНО есть пробел, или может быть, а может - нет?Если первое - то читай, как читаешь, но перед занесением в вектор удаляй запятую из строки. Если второе - то выбора у тебя нет, кроме как читать через getline всю строку, и потом ее разбирать на слова. |
Nike0 |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
"Пробелами и запятыми", или "пробелами или запятыми"? То есть, там, где есть запятая, ОБЯЗАТЕЛЬНО есть пробел, или может быть, а может - нет? Если первое - то читай, как читаешь, но перед занесением в вектор удаляй запятую из строки. Если второе - то выбора у тебя нет, кроме как читать через getline всю строку, и потом ее разбирать на слова. в условиии пробелами и запятыми, спасибо за подсказку, я это сделал, а что насчет 2го задания можете посоветовать? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Ошибочка у тебя, насколько я вижу:
for (i=0; s[n+i] !='\0' && s1[i] !='\0'; i++) |
Nike0 |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Ошибочка у тебя, насколько я вижу: for (i=0; s[n+i] !='\0' && s1[i] !='\0'; i++) о, спасибо большое, вот откуда брались неверные значения из памяти, однако это решило проблему только для случаев, когда искомая подстрока = заменяемой и когда искомая < заменяемой, но вот для этого участка кода if (dd < 0) очень все плохо, зацикливается и я не знаю что делать |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Nike0, это вообще чей алгоритм? Голову отрывать за такие ошибки надо: насколько я вижу, dd < 0 - это признак того, что искомая строка длиннее той, на которую надо заменить. И надо "хвост" сдвинуть влево. Но, блин, ведь если dd < 0, то s[k+dd] будет левее s[k], надо либо брать |dd|, либо просто:
for (k=n; s[k-dd]!='\0'; k++), тогда действительно "хвост" будет подтягиваться влево... |
Nike0 |
![]()
Сообщение
#7
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 2:25 |