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

Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
k0ksby
4 / 4 / 0
Регистрация: 05.10.2012
Сообщений: 9
12.12.2012, 08:54     Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа #1
Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа с фиксированной точкой.

Решите пожалуйста,кто сможет . идей вообще нет....

Добавлено через 4 часа 39 минут
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <iostream.h>
#include <string.h>
int main()  
{
int i,j;
char s[100];
char s1[100];
char s2[100];
char res[100];
cout<<"Vvedite stroky: "<<endl;
cin>>s;
int len=strlen(s);
for (i=1;i<len-1;i++)
{
strcpy(res,"");
if (s[i]=='.') 
{
strcpy(s1,"");
for (j=i-1;j>=0;j--)
{
if (s[j]=='0'||s[j]=='1'||s[j]=='2'||s[j]=='3'||s[j]=='4'||s[j]=='5'||s[j]=='6'||s[j]=='7'||s[j]=='8'||s[j]=='9') 
{
char tmp[100];
strcpy(tmp,s1);
strcpy(s1,"");
s1[0]=s[j];
strcat(s1,tmp);
}
else
{
break;
}
}
strcpy(s2,"\0");
for (j=i+1;j<len;j++)
{
if (s[j]=='0'||s[j]=='1'||s[j]=='2'||s[j]=='3'||s[j]=='4'||s[j]=='5'||s[j]=='6'||s[j]=='7'||s[j]=='8'||s[j]=='9')
{
s2[j-i-1]=s[j];
s2[j-i]='\0';
}
else
{
break;
}
}
if (strlen(s1)>0&&strlen(s2)>0)
{
bool plus=false;
int t=i-strlen(s1)-1;
if (t>=0)
 {
if (s[t]=='+'||s[t]=='-') 
{
res[0]=s[t];
 res[1]='\0';
plus=true;
 }
}
strcat(res,s1);
if (plus)
{
res[strlen(s1)+1]=s[i];
res[strlen(s1)+2]='\0';
}
else
{
res[strlen(s1)]=s[i];
res[strlen(s1)+1]='\0';
}
strcat(res,s2);
break;
}
}
}
if (strlen(res)>0)
{
cout<<res<<endl;
}
else
{
cout<<"Ne naideno!"<<endl;
}
return 0;
}
при компиляции "приложение не отвечает"

Добавлено через 9 часов 32 минуты
При вводе строки виснет exe потом прес эни Кей и все )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 08:54     Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа
Посмотрите здесь:

Выделить подстроку, которая соответствует записи целого числа C++
Дана строка, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи целого числа. C++
Строки. Выделить подстроку, которая соответствует записи целого числа. C++
C++ Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки- не работает
C++ Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры C++
C++ Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой
C++ Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
12.12.2012, 10:30     Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа #2
k0ksby,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <iterator>
 
#include <boost/regex.hpp>
 
int main() {
   std::string str = "-3.14asd.asd.a0.23.asdfj234d.123.34++23.0";
   boost::regex rgx("\\-?\\d+(\\.\\d+)");
   std::copy(
      boost::sregex_token_iterator(str.begin(), str.end(), rgx),
      boost::sregex_token_iterator(),
      std::ostream_iterator <std::string>(std::cout, " ")
   );
}
http://liveworkspace.org/code/13RCH8$77
k0ksby
4 / 4 / 0
Регистрация: 05.10.2012
Сообщений: 9
12.12.2012, 16:57  [ТС]     Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа #3
Спасибо, но нам нельзя пользоваться такими средствами. ( только 3 библиотеки разрешено

Добавлено через 5 часов 44 минуты
А кто объяснит,что не так с тем кодом,что я выложил?
Yandex
Объявления
12.12.2012, 16:57     Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа
Ответ Создать тему
Опции темы

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