![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Andrewshkovskii |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: ![]() ![]() ![]() |
Есть строка типа string
"1231.1232!1233.1234.1235!1236." надо получить строку "1231.1233.1234.1236." Никак не могу додуматься, как разбить на отдельные предложения или же сразу удалять..может кто-нибудь наводку кинет?.. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
int main() {
char s[256] = "1231.1232!1233.1234.1235!1236.";
char result[256] = {0}, *res;
res = result;
int count = 0;
for(char *p = s; *p; p++) {
switch(*p) {
case '.':
case '?':
*res++ = *p;
count = 0;
break;
case '!':
res -= count;
break;
default:
*res++ = *p; count += 1;
}
}
*res = '\0';
puts(result);
return 0;
}
Пойдет? |
Andrewshkovskii |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: ![]() ![]() ![]() |
а что насчет string из с++ ?
|
Andrewshkovskii |
![]()
Сообщение
#4
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: ![]() ![]() ![]() |
я извратился так, на болшее моей скудной фантазии и интеллекта не хватило
![]() #include <stdio.h>
#include <string.h>
#include <iostream.h>
using namespace std;
int main() {
string s1="1231.1232!1233.1234.1235!1236.";
char * s = new char[s1.size()+1];
strcpy(s, (char *)s1.c_str());
char result[s1.size()] ;//= {0};
char *res;
res = result;
int count = 0;
for(char *p = s; *p; p++) {
switch(*p) {
case '.':
case '?':
*res++ = *p;
count = 0;
break;
case '!':
res -= count;
break;
default:
*res++ = *p; count += 1;
}
}
*res = '\0';
puts(result);
s1=result;
return 0;
}
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
![]() #include <string>
#include <iostream>
using namespace std;
int main() {
string s = "1230!1231.1232!1233.1234.1235!1236.1237!";
cout << s << endl;
size_t found = s.find('!');
while(found != string::npos) {
size_t prev = s.find_last_of(".?", found);
if(prev == string::npos) prev = (size_t)(-1);
s.erase(prev + 1, found - prev);
found = s.find('!');
}
cout << s << endl;
return 0;
}
Попроще будет... |
![]() ![]() |
![]() |
Текстовая версия | 8.08.2025 7:24 |